首页 > 试题广场 >

假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要

[问答题]
假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要怎样一 个机制来安全有效的中止所有的线程?请描述其具体流程.
在主线程中检查子线程是否在运行(isRunning);
如果运行,发起线程退出操作(quit);
wait线程完全停止,delete线程对象;
等待所有子线程结束(发出finish信号),才退出程序;
发表于 2015-08-29 12:11:49 回复(0)
java:在线程的run方法里设置标志位或者调用线程的interrupt方法通过判断isinterrupted的返回值设置退出。
发表于 2015-09-05 21:22:55 回复(0)
可以学习一下java里边的方法.
给所有线程发送一个终止信号, 并设置超时时间. 子线程收到信号后, 采取相应的措施在指定时间内退出.
如果超时时间到了, 主线程检查各个子线程是否已经退出, 如果没有退出则强制结束子线程.
发表于 2015-09-04 11:03:54 回复(0)
程序中的主线程向各个子线程发送一个退出消息信号,各个线程收到这个消息信号后退出线程函数,则可以安全有效的推出所有的线程。
编辑于 2015-12-21 13:44:10 回复(0)
我想知道在主线程循环等待的同时,怎么检测子线程的退出情况!
发表于 2016-11-03 10:15:38 回复(1)
同步机制!例如pthread多线程处理;
1,创建线程pthread_t  ThreadA, ThreadB;
2,2线程并发执行, pthread_create(ThreadA, NULL, task1, NULL);
pthread_create(ThreadB, NULL, task2, NULL);
3,同步A,B; pthread_join(ThreadA, NULL);
pthread_join(ThreadB, NULL);
4,结束程序!
发表于 2015-12-20 21:47:07 回复(0)
<div> class RunThread implements Runnable{ </div> <div> &nbsp; &nbsp; private volatile boolean stop = false;<br /> </div> <div> &nbsp; &nbsp; public void run(){ </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; while(!stop){<br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; //.......<br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;} </div> <div> <br /> </div> <div> &nbsp; &nbsp; public void makeStop(){<br /> </div> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; this.stop = true;<br /> </div> <div> <br /> </div> <div> } </div> <div> <br /> </div> <div> <br /> </div> <div> public static void main(String [] args) </div> <div> { </div> <div> &nbsp; &nbsp; RunThread rt = new new RunThread(); </div> <div> <br /> </div> <div> &nbsp; &nbsp; Thread t = new Thread(rt); </div> <div> <br /> </div> <div> &nbsp; &nbsp; rt.makeStop(); </div> <div> } </div>
发表于 2015-09-05 12:19:01 回复(0)
使用一个守护进程,防止因为主进程的退出而造成其他进程的不恰当退出。
发表于 2015-09-05 11:09:12 回复(0)
<div> <br /> </div> <div> <br /> </div>
发表于 2015-09-05 10:42:23 回复(0)
可以设置一个全局同步的标志变量flag,所有的线程在运行时都要判定flag是否为true,为true就运行,为false则终止当前线程。当程序中止运行时将此标志位置为false,则其他线程检测到flag为false就会中止了。
发表于 2015-09-05 10:40:26 回复(0)
在主线程中检查子线程是否在运行(isRunning);
如果运行,发起线程退出操作(quit);
wait线程完全停止,delete线程对象;回收资源;
等待所有子线程结束(发出finish信号),才退出程序;

主线程给子线程发送信号并等待子线程结束,等子线程结束之后主线程才能退出;
发表于 2015-09-04 10:14:03 回复(0)
消息循环
发表于 2015-07-07 17:43:48 回复(0)
信号机制
发表于 2015-03-21 19:28:02 回复(0)
fadsfa
发表于 2014-12-22 14:11:57 回复(0)
java中使用finnaly来关闭所有线程
发表于 2014-12-10 10:52:52 回复(0)
扑捉进程退出信号,通过线程福安里模块通知每一个执行的线程退出,待所有线程都退出后主程序退出
发表于 2014-12-07 14:20:09 回复(0)
rrrrrrrrrrrrrrrrrr
发表于 2014-11-04 11:48:28 回复(0)