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;

    public MyThread(A a) {
        this.a = a;
    }
    public void run() {
        a.f1();
    }
}

public class TestMark_to_win {
    public static void main(String[] args) {
        A a = new A();
        Thread t1 = new MyThread(a);
        Thread t2 = new MyThread(a);
        t1.start();
        t2.start();
    }
}

 

更多请见:https://blog.csdn.net/qq_44639795/article/details/103096019

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark_to_win

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值