目录一,引进二,如何实现三,面试问题
一.引进
什么是线程通信?
线程通信是指通过多个线程消息传递进行的相互牵制、相互调度,即线程之间的相互作用。
二.1、涉及到的三个方法
wit ()此方法会阻止当前线程并释放同步监视器
notify () )此方法将调用另一个等待的线程,如果有多个线程等待,则会调用高优先级线程
notifyAll (:执行此方法将启动所有等待的线程
2、对这三个方法的说明
这三种方法只能用于同步代码块或同步方法
这三个方法的调用方必须是同步代码块或同步方法中的同步监视器
这三个方法在Object中定义,因为同步监视器可以是任何类的对象,并且必须是同步监视器调用
3、代码举例
案例:两个线程交替打印1-100
publicclassnumberimplementsrunnable { private int number=1; @Override public void run () while(true ) (synchronized ) this )//阻止的线程通告); if(number=100 ) (system.out.println ) thread.currentthread ) (.getName ) ) : (number ); 编号; try { //阻止当前线程并释放同步监视器等待(); } catch (互联互通) { e.printStackTrace ); } } else { break; }}}}三、问题sleep (与wait ) )异同
同样的积分
)均可将当前线程置于阻塞状态
不同点
Thread的sleep、Object的wait这两种方法所属的位置不同
)写在代码上的位置不同) sleep可以在任何地方调用,wait必须在同步代码块或同步方法中使用
(是否释放同步监视器) sleep不释放同步监视器,wait释放同步监视器