Java中线程通信的方法

来源:互联网 发布:扭矩补偿算法 编辑:程序博客网 时间:2024/06/04 19:59

1.对于传统的synchronized同步监视器对象(同步块中的obj互助哦和同步方法中的this)

   借助于Object提供的wait(),notify()和notifyAll()

  这三个方法不属于Thread类,属于Object类,但是这三个方法必须由同步监视器来调用。

  wait()方法——当前线程等待(当前线程会释放对该同步监视器的锁定),直到其他线程调用该同步监视器的notify()或者notifyAll()方法

   notify()方法——唤起在此同步监视器上等待的一个线程(随机)。代表当前线程释放对该监视器的锁定后,才可以执行被唤醒的线程。

   notifyAll()方法——唤醒在此同步监视器上等待的所有线程。


2.对于使用Lock的使用Condition控制线程通信

 Condition实例被绑定在Lock对象上,调用对象的newCondition()即可。Condition代替了同步监视器的功能。提供以下三个方法,与上面的三个方法类似:await(),signal()和signalAll()方法。


3.使用阻塞队列BlockingQueue

当生产者线程放入元素时,如果队列已满,则阻塞该线程

当消费者线程取出元素时,如果队列为空,则阻塞该线程

0 0
原创粉丝点击