美文网首页
Synchronized 详解

Synchronized 详解

作者: 福later | 来源:发表于2018-07-02 16:06 被阅读0次

转载https://www.jianshu.com/p/29854dc7bd86
面试题:主线程执行10次,子线程接着执行2次,主线程再执行10次,子线程接着执行2次,如此循环此行50次。
分析,两个线程串行交替执行;完整源码如下

public class InterViewOne {

public static void main(String[] args) {
    InterViewOne one = new InterViewOne();
    final Business business = one.init();
    new Thread(new Runnable() {

        @Override
        public void run() {
            for (int j = 0; j < 50; j++) {
                business.sub(j);
            }
        }
    }).start();

    for (int j = 0; j < 50; j++) {
        business.main(j);
    }
}

public Business init() {
    return new Business();

}

class Business {
    private boolean isShouldSub = true;

    public synchronized void sub(int i) {
        if (!isShouldSub) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        for (int j = 1; j <= 2; j++) {
            System.out.println("sub thread sequeue of " + j + ",loop of "
                    + i);
        }
        isShouldSub = false;
        this.notify();

    }

    public synchronized void main(int i) {
        if (isShouldSub) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        for (int j = 1; j <= 10; j++) {
            System.out.println("main thread sequeue of" + j + ",loop of "
                    + i);
        }
        isShouldSub = true;
        this.notify();
    }

}

}

相关文章

  • 多线程使用之-----synchronized/wait/not

    参考文献: java synchronized详解 synchronized 修饰方法 synchronized ...

  • Java基础-Synchronized详解一

    Java中的Synchronized详解 1.Synchronized简介 Synchronized简称同步锁。 ...

  • java基础----Synchronized、Lock的区别与V

    引用了 Lock与synchronized 的区别 详解synchronized与Lock的区别与使用 Java并...

  • Synchronized 原理详解

    title: synchronized原理详解date: 2019-11-27author:...

  • Day26 Synchronized

    synchronized原理详解synchronized内置锁是一种对象锁(锁的是对象而非引用),作用粒度是对象,...

  • Synchronized 详解

    转载https://www.jianshu.com/p/29854dc7bd86面试题:主线程执行10次,子线程接...

  • synchronized 详解

    问题 那到底使用synchronized关键字是不是就是一个监视器? 不懂,理解的话可以向我发邮件gaomengj...

  • synchronized详解

    第一种,锁在方法上,这种很好理解 第二种,锁变量 关于这个锁我一开始理解的是在执行完synchronized代码块...

  • Synchronized 详解

    synchronized关键字采用对代码块/方法体加锁的方式解决Java中多线程访问同一个资源时,引起的资源冲突问...

  • Synchronized详解

    什么是Synchronized,有什么用? Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保...

网友评论

      本文标题:Synchronized 详解

      本文链接:https://www.haomeiwen.com/subject/rpsluftx.html