java里面如何停止一个运行的线程? java里面如何停止一个运行的线程? 谢谢 !! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 知道的回复下?java网络编程中如何停止或杀死一个线程?? 不是可以设置一个flag标志变量吗?我也是初学者,说错了可不要笑我啊!class Test{ public static void main(String[] args) { Thread_1 th=new Thread_1(); th.start(); //th.stopT_1(); 如果想停止Thread_1线程就调用stopT_1()方法. }}class Thread_1 extends Thread{ boolean flag=false; public void run() { while(!flag) { System.out.println(getName()); } } public void stopT_1() { flag=true; }}还有Thread.interrupt()这个方法啊,自己再参考一下API文档吧! 尽量不这么做,因为线程的 stop 方法已经被定义为不安全的。每个线程都要有停止的条件。最简单的莫过于:public class MyThread extends Thread { public boolean stop = false; public void run() { while(!stop) { ... } }} 应该是这样吧private boolean flag=true;public void run(){ while(flag){ }}public void stop(){ falg=false;} boolean flag=true; public void run(){ while(flag){ ....... } } 上面是线程中的run方法,不干预则一直在线程循环中 停止只需要在外部改变flag=false,线程就自然终止了。 我的程序是socket编程的,在run()方法中,server监听client产生阻塞,我用flag标志来阻断它,但是没有效果啊? 有些线程除非你exit,否则中断不了,最简单的就是访问blockqeue 我的想法是在图形界面下的一个按钮来实现这个线程的启动与停止? 但是,为什么线程一停止,我的整个程序(Frame)也跟着退出呢?请各位指教!!! 你可以在socket申明的时候就设置好timeout时间,应该不会一致阻塞,过了timeout时间,如果还没有接受到数据就会ioexception. 估计你是在main里启动了一个线程,后面没有其它动作方式主线程的终止,如果主线程终止,则其它所有线程终止后,程序就会退出。在你启动线程后,如果没啥事儿干,可以加一个System.in.read(); 在while循环时加个flage控制跳出循环就可以了啊 设个标记量,控制线程。boolean flag=true; public void run(){ while(flag){ /// } } flag标志不管用的,试过了 你是不是把主控制器也做成现成了?我就是这样做的,所以最好你这样布局:1.主控制器;2.控制界面;3.被控制的工作线程;你在控制界面按下按钮后,你传参数给主控制器,然后让主控制器去stop被控制的工作线程,(你如果把主控制器也做成了线程,程序当然退出了) socket一直在accept,没有来的及判断调节flag啊,用下interrupt吧 public class MyThread extends Thread { public boolean isExit = false; public void run() { while(!isExit ) { ... } } public void stop(){ isExit = true; }} 先设一个boolean flag=true;让它停止执行,设flag=false;这个常用来停止线程的方法 join();合并线程,相当于方法调用,要比stop()好。 for循环 一些问题 求助:一个拼图游戏的图形显示问题 60分 谁指点一下我的算法 帮忙解决一个小问题 请教:在java中采用哪种驱动连接可以访问到远程服务器上的sqlServer数据库 请问大家写一个文件互传的程序,两端都用serversocket吗 if 看完 Thinging in Java 能做什么? 有些问题学的糊涂,请大家指教一下 急死了! oracle中long数据类型问题! 重酬!!! 谁有VisualCafe的光盘啊? 我要引入一个第三方包jdom.jar,必须在Class-Path中加上此包路径? 如何实现类实例化时候实现接口
我也是初学者,说错了可不要笑我啊!class Test
{
public static void main(String[] args)
{
Thread_1 th=new Thread_1();
th.start();
//th.stopT_1(); 如果想停止Thread_1线程就调用stopT_1()方法.
}
}
class Thread_1 extends Thread
{
boolean flag=false;
public void run()
{
while(!flag)
{
System.out.println(getName());
}
}
public void stopT_1()
{
flag=true;
}
}还有Thread.interrupt()这个方法啊,自己再参考一下API文档吧!
public class MyThread extends Thread {
public boolean stop = false; public void run() {
while(!stop) {
...
}
}
}
private boolean flag=true;public void run(){
while(flag){
}
}public void stop(){
falg=false;
}
public void run(){
while(flag){
.......
}
}
上面是线程中的run方法,不干预则一直在线程循环中
停止只需要在外部改变flag=false,线程就自然终止了。
但是,为什么线程一停止,我的整个程序(Frame)也跟着退出呢?
请各位指教!!!
估计你是在main里启动了一个线程,后面没有其它动作方式主线程的终止,
如果主线程终止,则其它所有线程终止后,程序就会退出。在你启动线程后,如果没啥事儿干,可以加一个System.in.read();
boolean flag=true;
public void run(){
while(flag){
///
}
}
flag标志不管用的,试过了
我就是这样做的,所以最好你这样布局:
1.主控制器;
2.控制界面;
3.被控制的工作线程;你在控制界面按下按钮后,你传参数给主控制器,然后让主控制器去stop被控制的工作线程,(你如果把主控制器也做成了线程,程序当然退出了)
public boolean isExit = false; public void run() {
while(!isExit ) {
...
}
}
public void stop(){
isExit = true;
}
}
让它停止执行,设flag=false;
这个常用来停止线程的方法