首页 > 编程知识 正文

多线程之间的通信,实现线程之间通信的方法

时间:2023-05-05 16:30:50 阅读:61995 作者:1956

目录一,引进二,如何实现三,面试问题

一.引进

什么是线程通信?

线程通信是指通过多个线程消息传递进行的相互牵制、相互调度,即线程之间的相互作用。

二.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释放同步监视器

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。