java中线程同步Synchronized,监视器monitor和锁lock的关系?

线程同步Synchronized,监视器monitor和锁lock的关系 (视频下载) (全部书籍)

既然有关监视器monitor的概念比较难,大家怎么解释的都有。首先我给出一下java的官方文档,也是最权威的解释:

Synchronization is built around an internal entity known as the intrinsic lock or monitor lock. (The API specification often refers to this entity simply as a "monitor."),Every object has an intrinsic lock associated with it. By convention, a thread that needs exclusive and consistent access to an object's fields has to acquire the object's intrinsic lock before accessing them, and then release the intrinsic lock when it's done with them.

源自:http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html

根据官方文档,我来说说我的看法。马克-to-win: synchronized 工作机制是这样的:Java中每个对象都有一把锁与之相关联,锁控制着对象的synchronized代码。一个要执行对象的synchronized代 码的线程必须先获得那个对象的锁。(即使两个方法分别被冠以synchronized,见例子例1.9.3-b)有点儿监控(monitor)的感觉吗?

synchronized关键字使用方式有两种:synchronized方法和synchronized块。以下会给出例子:

例1.9.3-本章源码class A {
    public synchronized void f1() {
        for (int i = 0; i < 3; i++) {
            try {
                Thread.sleep(1000);
            } catch (Exception e) {
            }
            System.out.println("i = " + i);
        }
    }
}

class MyThread extends Thread {
    A a;

。。。。。。。。。。。。。。。。。详情请进:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/JavaBeginner6_web.html#relationshipOfSynchronizedLockandmonitor

猜你喜欢

转载自www.cnblogs.com/mark-to-win/p/9696283.html