A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhoubinjian 金牌黑马   /  2016-4-5 18:14  /  367 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

加了同步问题还在?

想想前提:1.多线程运行代码是不是都同步了,2.是不是同一个锁
       

wait();
notify();
notifyAll();
都使用在同步中,因为要对持有监视器(锁)的线程操作。
所以要使用在同步中,因为只有同步才具有锁。

为什么这些操作线程的定义object中呢?

因为这些方法在操作同步中线程时,都必须要标识它们所操作线程持有的锁。
因为wait()和notify()必须要是在同一个锁。

而锁可以是任意对象,所以可以被任意对象调用的方法定义object类中。


JDK1.5的新特性:提供了线程升级解决方案
1.Lock代替了synchronized
2.Condition代替了Object监视器方法,将(wait,notify,notifyAll)封装成

Condition对象,Condition对象可以生成多个,也就是说可以有多组

(wait,notify,notifyAll),可以调用唤醒对方的函数
3.该对象可以通过Lock锁进行获取。


守护线程:setDaemon()
必须在启动线程前调用
主线程结束了,守护线程也会跟着结束。



等待线程:join()(需要抛出异常)
当A线程执行到了B线程的join()方法时,A就会等待,等B线程都执行完,A才执行,
join可以用来临时加入线程执行。

设置优先级:setpriority(Thread.MAX_PRIORITY)//优先级设置最高


yield():暂停当前正在执行的线程对象,并执行其它的线程。让每个线程都有机会

执行。类似于交替执行

1 个回复

倒序浏览
lock较之前的等待唤醒机制更加具有灵活性,可以有指向性的唤醒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马