线程的交互

来源:互联网 发布:videoscribe 软件 编辑:程序博客网 时间:2024/04/27 18:54
 

今天内容很少但是却不好理解,今天主要说的是线程的交互

l  void notify() :唤醒在此对象监视器上等待的单个线程。

l  void notifyAll():唤醒在此对象监视器上等待的所有线程。

l  void wait() :导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或notifyAll() 方法。

多个线程在等待一个对象锁时候使用notifyAll()

                     try {

                       System.out.println(Thread.currentThread() + "等待计算结果。。。");

                  c.wait();

               } catch (InterruptedException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

               }

线程休眠

                synchronized (this) {

                        for (int i = 0; i < 101; i++) {

                                total += i;

                        }  notifyAll();

                }

通知所有在此对象上等待的线程

wait()、notify()、notifyAll()都是Object的实例方法。与每个对象具有锁一样,每个对象可以有一个线程列表,他们等待来自该信号(通知)。线程通过执行对象上的wait()方法获得这个等待列表。从那时候起,它不再执行任何其他指令,直到调用对象的notify()方法为止。如果多个线程在同一个对象上等待,则将只选择一个线程(不保证以何种顺序)继续执行。如果没有线程等待,则不采取任何特殊操作。

原创粉丝点击