现在的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){}
}
}
}
欢迎交流!
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){}
}
}
}
本文介绍了一种在Java中不使用已废弃的Thread类方法来控制线程的新方案。通过自定义MyThread类,利用状态标志变量实现线程的启动、暂停与停止,并通过synchronized与wait/notify机制确保线程安全。
1723

被折叠的 条评论
为什么被折叠?



