Thread類的notify()方法用于喚醒單個線程。 此方法僅為一個等待特定對象的線程提供通知。
如果使用notify()方法并且有多個線程正在等待通知,那么只有一個線程獲得通知,而剩下的線程必須等待進一步的通知。
java多線程notify?語法
public final void notify()
返回
java中set。此方法不返回任何值。
異常
IllegalMonitorStateException :如果當前線程不是對象監視器的所有者,則拋出此異常。
java equals?示例
class Notify1 extends Thread
{
java implements、public void run()
{
synchronized(this)
{
System.out.println("Starting of " + Thread.currentThread().getName());
try {
this.wait();
}
catch (InterruptedException e) {
e.printStackTrace();}
System.out.println(Thread.currentThread().getName() + "...notified");
}
}
}
class Notify2 extends Thread {
Notify1 notify1;
Notify2(Notify1 notify1)
{
this.notify1 = notify1;
}
public void run()
{
synchronized(this.notify1)
{
System.out.println("Starting of " + Thread.currentThread().getName());
try {
this.notify1.wait();
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "...notified");
}
}
}
class Notify3 extends Thread
{
Notify1 notify1;
Notify3(Notify1 notify1)
{
this.notify1 = notify1;
}
public void run()
{
synchronized(this.notify1)
{
System.out.println("Starting of " + Thread.currentThread().getName());
// call the notify() method
this.notify1.notify();
System.out.println(Thread.currentThread().getName() + "...notified");
}
}
}
public class JavaNotifyExp
{
public static void main(String[] args) throws InterruptedException
{
Notify1 notify1 = new Notify1();
Notify2 notify2 = new Notify2(notify1);
Notify3 notify3 = new Notify3(notify1);
// creating the threads
Thread t1 = new Thread(notify1, "Thread-1");
Thread t2 = new Thread(notify2, "Thread-2");
Thread t3 = new Thread(notify3, "Thread-3");
// call run() method
t1.start();
t2.start();
Thread.sleep(100);
t3.start();
}
}
執行上面示例代碼,得到以下結果:
Starting of Thread-1
Starting of Thread-2
Starting of Thread-3
Thread-3...notified
Thread-1...notified
¥ 我要打賞
糾錯/補充
收藏
下一篇:哥,這回真沒有了
加QQ群啦,易百教程官方技術學習群
注意:建議每個人選自己的技術方向加群,同一個QQ最多限加 3 個群。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态