java

位置:IT落伍者 >> java >> 浏览文章

验证后台线程的java多线程技术


发布日期:2021年11月07日
 
验证后台线程的java多线程技术

这个程序验证了后台线程与用户线程的区别以及之间的关系证明了只要所有的用户线程结束了那么后台线程就将必须结束!

import ncurrentTimeUnit;

public class Test {

public static void main(String[] args){

//将主线程的优先级设为最低优先执行main线程创建的线程

ThreadcurrentThread()setPriority(ThreadMIN_PRIORITY);

Thread myThread=new Thread(new Runnable(){

public void run(){

while(true)

{

Systemoutprintln(i will wait for you in shangling);

try {

TimeUnitMILLISECONDSsleep();

} catch (InterruptedException e) {

eprintStackTrace();

}

}

}

});

myThreadsetDaemon(true); //设置后台线程一定要写在start()方法的前面要不然是无效的

myThreadsetPriority(ThreadMAX_PRIORITY);

myThreadstart();

Thread userThread = new Thread(new Runnable(){

public void run(){

for(int i=;i<;i++)

Systemoutprintln(this is a user Thread);

}

});

userThreadsetPriority(ThreadMAX_PRIORITY);

userThreadstart();

Systemoutprintln(the main thread is end );

}

}

在上面的程序中就能体会到当用户线程都结束时虽然后台线程(幽灵线程)是一个死循环但是只要所有的用户线程都结束了那么系统就会自动停止要让后台线程执行得久一点只有一个方法那就是延长用户线程的运行时间例如在main()方法中添加sleep()方法进行延时

这里要注意一点不要利用sleep方法来精确计时由于这种方法是依赖操作系统的所以它的计时准确性是非常不可靠的当休眠时间过长时可能会产生意想不到的事情发生!

               

上一篇:Java多线程初学者指南(12):使用Synchronized块同步变量

下一篇:JXTA Platform JAVA参考实现源代码分析(2)