验证后台线程的java多线程技术
作者:网络转载 发布时间:[ 2013/5/10 9:56:52 ] 推荐标签:
这个程序验证了后台线程与用户线程的区别以及之间的关系,证明了只要所有的用户线程结束了,那么后台线程将必须结束!
import java.util.concurrent.TimeUnit;
public class Test {
public static void main(String[] args){
//将主线程的优先级设为低,优先执行main线程创建的线程
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
Thread myThread=new Thread(new Runnable(){
public void run(){
while(true)
{
System.out.println("i will wait for you in shangling");
try {
TimeUnit.MILLISECONDS.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
myThread.setDaemon(true); //设置后台线程一定要写在start()方法的前面,要不然是无效的
myThread.setPriority(Thread.MAX_PRIORITY);
myThread.start();
Thread userThread = new Thread(new Runnable(){
public void run(){
for(int i=0;i<5;i++)
System.out.println("this is a user Thread");
}
});
userThread.setPriority(Thread.MAX_PRIORITY);
userThread.start();
System.out.println("the main thread is end" );
}
}
在上面的程序中能体会到,当用户线程都结束时,虽然后台线程(幽灵线程)是一个死循环,但是只要所有的用户线程都结束了,那么系统会自动停止。要让后台线程执行得久一点,只有一个方法,那是延长用户线程的运行时间,例如在main()方法中添加sleep()方法进行延时。
这里要注意一点,不要利用sleep方法来精确计时,由于这种方法是依赖操作系统的,所以它的计时准确性是非常不可靠的,当休眠时间过长时可能会产生意想不到的事情发生!
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11