很简单啊。你已经基本说明白了。
一个主控类,三个线程类(当然可能是一个,被你示例化了三份)。
主控类用来调用/运行三个线程类、接收用户输入、停止指定线程类。
线程类是自循环执行,当退出条件满足,则退出大概写了一个流程性质的东西,供参考public class TMainClass{
public static void main(String[] args){
根据参数启动TloopThread
启动线程
thread1=new TloopThread();
thread1.start();
接受客户输入
if (客户要停止线程1){
thread1.setStop();
}
}
}class TloopThread extends Thread{
boolean isStop=false; public void run(){
while(!isStop){
//循环执行
}
} //设置停止
public void setStop(){
isStop=true;
}
}
一个主控类,三个线程类(当然可能是一个,被你示例化了三份)。
主控类用来调用/运行三个线程类、接收用户输入、停止指定线程类。
线程类是自循环执行,当退出条件满足,则退出大概写了一个流程性质的东西,供参考public class TMainClass{
public static void main(String[] args){
根据参数启动TloopThread
启动线程
thread1=new TloopThread();
thread1.start();
接受客户输入
if (客户要停止线程1){
thread1.setStop();
}
}
}class TloopThread extends Thread{
boolean isStop=false; public void run(){
while(!isStop){
//循环执行
}
} //设置停止
public void setStop(){
isStop=true;
}
}
问题2:给三个线程各配一个ID,根据输入终止Thread.stop();
问题3:你把三个线程将要完成的任务放在它的run()方法时,如果处理完了,这个线程也就自动结束了所以不需要人为终止.
>>停止线程可以直接用thread1.stop();
虽然使用Stop可以强制终止一个线程,但是java2中已经不推荐这样做了,属于deprecated的。还是判断退出条件相对好一点点……
[email protected]
1.private volatile boolean isStop = false;
2.轮询是不建议采用的方式。所谓轮询是指类似下列的代码:
while(某个条件不满足){
sleep(1000);
}
使用while循环始终查询某个条件是否满足,不满足就休眠一段时间,直到等待条件满足为止。这样会占用更多CPU资源,建议采用的方法是用wait()/notifyAll()取代轮询。
while(某个条件不满足){
object1.wait();
}
而在其它线程中当该条件满足时通过 object1.notifyAll() 唤醒该线程。