现在的JDK中 Thread 类的 stop(), resume(), suspend() 等方式是过时的了,那么如何在实现 线程的 停止,暂停,继续呢?下面是我写的一个代码,供大家参考。
欢迎交流!
package a;
public abstract class MyThread extends Thread{
private int flag=0;// 1 继续运行,2 暂停 ,3 停止
private Object o;
public MyThread(){
o=new Object();
}
abstract public void work(); //需要子类实现的方法,类似 run()
public void run(){
flag=1;
while(flag==1){
try{
work();
}cahct(Exception e){//这样做可以让线程不会因为 work()的异常而停止
e.printStackTrace();
}
//可以加些sleep()等让线程自动放弃CPU资源
while(flag==2){
synchronized(o){
try{
o.wait();
}catch(Exception e){}
}
}
}
System.out.println("--stoped-------");
}
public void stop_t(){ //停止
flag=3;
}
public void pause(){
flag=2;
}
public void jixu(){
flag=1;
synchronized(o){
try{
o.notify();
}catch(Exception e){}
}
}
}
分享到:
相关推荐
总之,这个C#线程暂停继续停止小案例是一个实用的学习资源,可以帮助开发者更好地理解和掌握多线程编程中的控制技巧,以及如何利用定时器来实现复杂的同步策略。通过深入研究和实践,你可以进一步提升在并发和异步...
TThread是一个抽象类,需要派生自TThread来创建自定义的线程类。在派生类中,你需要重写Execute方法,这是线程的主要执行代码,相当于线程函数。如果你的线程需要与主线程或其他VCL组件交互,可以使用Synchronize...
通过命令行参数可以实现播放、暂停、停止等操作。 2. VLC:VLC不仅是一个媒体播放器,还具有流媒体服务器功能。它同样支持命令行控制,例如`vlc -I rc`启动远程控制模式,然后通过`play`、`pause`、`stop`命令控制...
7. **断点续传**:断点续传允许在下载过程中暂停,然后在稍后的时间继续从上次停止的地方开始下载。这通常通过设置`HttpWebRequest`的`Range`属性实现,指定下载的字节范围。 8. **文件流操作**:`WebResponse`的`...
TThread类是VCL(Visual Component Library)框架提供的一种用于创建线程的抽象类。它继承自TComponent,因此可以像其他组件一样在设计时添加到表单上,也可以在运行时动态创建。要创建一个线程实例,你需要创建...
多线程允许在一个进程中同时执行多个执行单元,即使一个线程被阻塞,其他线程仍可继续运行,从而提高了程序的响应性和效率。在Windows系统中,进程拥有独立的虚拟地址空间和资源,而线程共享进程的资源,包括内存、...
在这个项目中,开发者可以实现启动、停止、暂停和恢复线程的功能,这对于需要动态控制任务执行流程的复杂应用来说非常有用。以下是关于`Task`多线程管理的一些关键知识点: 1. **异步编程模型**:`Task`类是基于...
首先,要创建一个新的线程,可以使用`System.Threading.Thread`类。以下是一个简单的例子: ```csharp Thread newThread = new Thread(new ThreadStart(MyThreadFunction)); ``` 在这里,`MyThreadFunction`是线程...
主线程可以通过消息或事件通知工作者线程开始、暂停或停止工作,实现线程的动态控制。 总结来说,MFC提供的多线程支持使得开发者能够轻松地在C++环境中构建并发应用程序。理解并熟练运用MFC线程管理,可以极大地...
为了更好地抽象出多线程编程的核心概念,可以尝试定义一个通用的线程类,该类可以在不同的操作系统平台上工作。 #### 四、线程的生命周期与控制 了解了线程的基本概念后,我们还需要掌握如何控制线程的生命周期,...
2. `SuspendThread`函数用于挂起指定线程的执行,使其停止活动,直到`ResumeThread`函数被调用,线程才会继续执行。成功执行后,函数返回挂起线程之前的计数器值。 **MFC中的多线程** 除了Win32 API,VC++的MFC库...
`Thread.CurrentThread`属性获取当前线程,`Thread.Sleep()`使线程暂停指定时间。 10. **线程安全的数据结构** .NET框架提供了线程安全的数据结构,如`ConcurrentQueue`, `ConcurrentStack`, `...
这是一个抽象类,提供了两个主要方法:`onTick(long millisUntilFinished)` 和 `onFinish()`。`onTick` 在倒计时每次间隔结束后被调用,参数`millisUntilFinished`表示剩余的毫秒数;`onFinish` 则在倒计时结束时...
在Android SDK中,`CountDownTimer`是一个抽象类,需要我们继承并重写两个方法:`onTick(long millisUntilFinished)`和`onFinish()`。`onTick()`方法在倒计时的每个间隔被调用,参数`millisUntilFinished`表示剩余的...
`TimerTask`是一个抽象类,需要重写`run()`方法来定义倒计时过程中每次间隔触发的操作。 ```java class CountdownTask extends TimerTask { @Override public void run() { // 在这里计算剩余时间,并通过...
1. **继承自 `TThread`**: 创建一个新的类,继承自 `TThread`,并在此类中实现你需要在线程中运行的代码。 ```delphi type TMyThread = class(TThread) protected procedure Execute; override; end; ``` 2. *...
`CountDownTimer`是Android SDK中的一个抽象类,用于创建一个倒计时器,该计时器在达到零之前每隔一定时间间隔发出回调。它有两个核心方法:`onTick(long millisUntilFinished)` 和 `onFinish()`。`onTick`在每次倒...
3. 任务接口(CJob):它是一个抽象基类,定义了任务必须实现的Run方法。所有的具体任务类都继承自CJob类,并提供具体的任务逻辑。 4. 线程池(CThreadPool):负责保存、管理和调度工作线程,同时维护一个任务队列...