14-12,守护线程-setDeamon
1,守护线程setDeamon:将该线程标记为守护或用户线程,当正在运行的线程都是守护线程时,Java虚拟机退出。
可将守护线程理解为后台线程,后台线程依附于前台线程,前台线程结束后,后台线程也自动结束。
2,如上例中,把t2.interrupt()注释掉,这样只有t1继续执行并且t1线程结束,t2结束不了,则整个进程结束不了,若在t2.start()上方加上一句:t2.setDeamon(),则t2变为后台线程,当主线程与t1线程都结束时,t2也会随之结束。
setDeamon方法必须在启动线程前调用。
14-13,其他方法-join等
1,join方法:等待该线程结束。
如:
t1.start();
t1.join(); //从main得到执行权,等到t1执行完,t2和main在执行。
t2.start();
若把t1.join()放在t2.start()下面,则main不执行,t2和t1随机执行,main只等t1结束后就开始执行,跟t2没有关系。
什么时候用join?
在临时加入一个线程运算时可以使用join方法。
2,优先级
Thread类中有toString()方法,返回线程名字,优先级和线程组。
线程的优先级是指线程被CPU执行的机率,值越高,机率越大,范围是1-10。
Thread中有三个字段:
staticint MAX_PRIORITY;值为10
staticint MIN_PRIORITY;值为1
staticint NORM_PRIORITY;值为5
如:
将t1的优先级设置为10可以这么写:
t1.setPriority(Thread.MAX_PRIORITY);
3,线程组:把线程进行组的划分。
若要对一组线程进行某种统一的操作,可将这组线程加入线程组(ThreadGroup)。
4,yield()方法,临时暂停线程使用。