您的位置:首页 > 大数据 > 人工智能

Synchronized()与wait()用法

2014-10-16 11:03 176 查看
浅显解释Synchronized()与wait()用法
 
 
 
     一直不理解Synchronized()与wait()到底什么意思,到底怎么用。现在有了一些基本的认识,拿来共享
 
这里以一个例子说明问题,注释部分会解释清楚
 
JAVA代码
 
package changhanming;

public class ThreadA {

    public static void main(String[] args) throws InterruptedException {

        ThreadB b = new ThreadB();

        // 启动计算线程,启动B里的run();

        b.start();

      

       synchronized (b) {      //为了防止B里的synchronized同时执行。其实A给B上锁

         

            // 当前线程A等待,这里注意的是wait()方法是使当前线程,A线程等待。

            //若没有wait,则A和B两个线程同步,这时A首先抢占到资源,运行。B还没运行,所以此时计算结果为0

            //若启动wait,则让当前线程A等待。B运行结束后,再唤醒A

         

            b.wait();                  //A放弃B锁,让B执行

          

          

            System.out.println("计算结果:" + b.sum);

        }

      

 class ThreadB extends Thread {

    int total;

    public void run() {

        synchronized (this) {

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

                sum += i;

            }       

            // (完成计算了)唤醒线程A

           notifyAll();

       }

    }

}

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息