Java线程中的notifyAll唤醒操作(推荐)
程序员文章站
2024-03-04 16:11:05
注意:
java中的notifyall和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyall是针对指定对象...
注意:
java中的notifyall和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyall是针对指定对象里面的所有线程执行唤醒操作,指定对象一旦唤醒成功。则会立即加入线程的资源争夺中去。
例如:
package testthread.threadsynchronized; public class testwaitall { public static void main(string[] args) { test1 test1 = new test1(); thread t = new thread(test1, "线程1"); thread t1 = new thread(test1, "线程2"); thread t2 = new thread(test1, "线程3"); test2 test2 = new test2(test1, "唤醒线程"); t.start(); t1.start(); t2.start(); try { thread.sleep(2000); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } test2.start(); } } class test1 implements runnable { public void run() { synchronized (this) { try { this.wait(); } catch (interruptedexception e) { e.printstacktrace(); } system.out.println(thread.currentthread().getname() + "当前没有被执行到!"); } } } class test2 extends thread { private test1 test1; string name; public test2(test1 test1, string name) { super(name); this.name = name; this.test1 = test1; } public void run() { synchronized (test1) { test1.notifyall();// 针对当前对象执行唤醒所有线程的操作 system.out.println(thread.currentthread().getname() + ":唤醒线程执行成功!"); } } }
执行结果为:
以上所述是小编给大家介绍的java线程中的notifyall唤醒操作,希望对大家有所帮助
推荐阅读
-
Java线程中的notifyAll唤醒操作(推荐)
-
Java线程中的notifyAll唤醒操作(推荐)
-
Java中对AtomicInteger和int值在多线程下递增操作的测试
-
Java中对AtomicInteger和int值在多线程下递增操作的测试
-
Java多线程基础 线程的等待与唤醒(wait、notify、notifyAll)
-
Java多线程基础 线程的等待与唤醒(wait、notify、notifyAll)
-
java 多线程 wait nofity notifyAll 线程唤醒之后的执行
-
Java中多线程实现的三种方式及线程的常用操作
-
被线程坑惨了!好好分析java线程中的wait、notify、notifyAll
-
详解Java线程中的wait()、notify()、notifyAll()方法