Java 线程2

join()方法可以改变java里线程随机调度的现象,join方法会让使用join方法的线程处于等待的状态,只有当正在执行线程结束运行后后才会调用使用到join方法的线程。
用法:在新建线程的时候 new SimpleThread().join();

线程对象要被销毁要满足两个条件:一个是该线程对象没有被引用,一个是run方法停止运行了。但是当线程跳出了run方法,java虚拟机不一定知道线程已经执行完毕,这个需要一个过程,因此java中有了个yield方法,这个方法告诉java虚拟机,线程的任务已经完成了,可以释放该线程的CPU留给其他线程使用了。
用法:在run方法最后加上:yield();
线程的调度是以抢占式的方式进行,有时调度花去的时间太多,导致线程执行到yield时候线程对象可能已经被java虚拟机所回收了,因此在实际运用中yield用途还真的不大。

在实际运用中使用最多的Thread方法是sleep。让线程休息一段时间,换句话说就是让线程暂停固定的时间。
用法:sleep(100);
我们发现调用sleep方法的地方要抛出一个异常InterruptedException,为什么会有这个异常呢?原因很简单,休眠的线程也有可能被终止,例如使用thread里的interrupt方法就会导致线程的终止,这种情况违反了sleep函数设计的初衷,因此会有导致在此抛出。我们回到上面join方法,join方法使用时候也会抛出InterruptedException,为什么呢?其实我们在调用join方法时候,被调用join方法的线程也是像调用sleep方法那样被休眠起来,它等待前一个线程执行结束的时候才能唤醒它,但是只要是休眠的线程同样也有可能被中断,这种结果也是方法不愿意接受的情况,因此会有InterruptedException异常的抛出。

线程优先级:
这是java线程的优先级: 
java.lang.Thread 
public static final int MAX_PRIORITY 10 
public static final int MIN_PRIORITY 1 
public static final int NORM_PRIORITY 5 
默认main方法也就是主线程的级别是5

全文参考:http://blog.csdn.net/jiangxinyu/article/details/7814077

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值