现在的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){}
}
}
}