一,
1,Wait,notify,notifyall为何都使用在同步中?,因为对持有锁的线程操作。所以要使用在同步中,因为只有同步才具有锁。
2,为何这些操作要定义在Objiect中呢?因为这些方法在操作同步线程时,都必须标识他们所操作线程只有锁。可以被同一个锁notify唤醒,不可以对不同锁中的线程进行唤醒。也就是说等待和唤醒必须是同一个锁。而锁是任意对象,所以可以被任意对象所定义的方法必须定义在Object中。
86.jdk1.5提供了多线程的升级解决方案,将同步synchronize替换成显示lock操作。将object中的wait,notify,notifyAll,替换了Contion对象。该对象可以lock锁进行获取。
二、线程的停止:stop方法已经过时。如何停止用run方法结束。开启多线程,通常使用循环。所以只要控制线循环,就可以让run方法结束,也就是线程结束。当没有指定的方式让线程回复到运行状态时,这时需要对冻结进行清除。
T1.setDaemon(守护线程)必须放在在程序执行前,是后台线程开始执行与一般线程一样。只是后台线程要等到所有的前台线程运行完之后后台线程(守护线程)自动结束。
T1.join();T1要cpu的执行权,把运行代码执行完毕后主线程恢复。Join当A线程执行到B线程的.join()方法时,A线程就会等待。等B线程都执行完毕后,A线程才会执行。Join可以临时加入线程执行。
三,默认的优先级为5,总共是10各级别。最高级是10 t1
设置优先级的方法。t1.setPriority(Thread.MAX_PRIORITY);.MAX_PRIORITY常量一般为大写英文字母为是10,最低级为5。
Thread.yield();临时停止执行线程,释放执行权使达到每个线程都有临时执行的权利。 |
|