黑马程序员技术交流社区
标题:
线程小问题
[打印本页]
作者:
韩俊杰
时间:
2012-12-20 23:37
标题:
线程小问题
本帖最后由 韩俊杰 于 2012-12-25 18:05 编辑
package practice;
class stopThreadDemo implements Runnable{
private boolean flag=true;
public synchronized void run(){
while(flag){
try{
wait();
}catch(InterruptedException e){
System.out.println(Thread.currentThread().getName()+"...exception");
flag=false;
}
System.out.println(Thread.currentThread().getName()+"...run");
}
}
public void ChangeFlag(){
flag=false;
}
}
public class StopDemo {
public static void main(String[] args) {
stopThreadDemo st=new stopThreadDemo();
Thread th1=new Thread(st);
Thread th2=new Thread(st);
th1.setDaemon(true);
th2.setDaemon(true);
th1.start();
th2.start();
int num=0;
while(true){
if (num++==60){
//st.ChangeFlag();
/*th1.interrupt();//强制清除冻结状态恢复到运行状态
th2.interrupt();*/
break;
}
System.out.println(Thread.currentThread().getName()+"..."+num);
}
}
}
有一点不明白就是什么是个守护线程?还有就是红颜色的两部分都能使线程结束,那应该用哪一个?
作者:
罗海清
时间:
2012-12-21 12:59
请看我调试的结果吧,相信你会明白的
import java.io.*;
public class TestMain extends Thread {
public TestMain() {
}
public void run() {
for(int i = 1; i <= 10; i++){
try {
Thread.sleep(3000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.println(i);
}
System.out.println("我结束了");
}
public static void main(String [] args)throws Exception{
TestMain test = new TestMain();
test.setDaemon(true);
test.start();
System.out.println("isDaemon = " + test.isDaemon());
int i = 20;
while(true)
{
Thread.sleep(1000*3);
System.out.println(i--);
if(i==17)
{
System.out.println("主线程结束");
break;
}
}
}
}
1、当普通线程运行结束时,本例的“主线程”,系统不管你这个守护线程有没有结束,我都退出
2、至于有什么实际应用,我也是菜鸟,不过我同意网上说的,jvm的垃圾回收线程,是一个守护线程。
3、还有输入法的后台线程,就是守护线程,它可以限制你的输入对不对,给出提示,我也同意这个说法。
4、有什么不对的,请各个师兄弟姐妹指出
守护.PNG
(11.1 KB, 下载次数: 21)
下载附件
2012-12-21 12:54 上传
守护线程例子运行结果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2