synchronized 加锁 this 和 class 的区别!(4)

简介: synchronized 加锁 this 和 class 的区别!(4)

3.加锁 this 共享一个类实例


接下来,我们创建 5 个线程,调用 synchronized 加锁 this 的示例。首先我们这 5 个线程调用同一个对象的加锁方法,示例代码如下:


import java.util.Date;
import java.util.concurrent.TimeUnit;
publicclass SynchronizedExample {
    public static void main(String[] args) {
        // 创建当前类实例
        final SynchronizedExample example = new SynchronizedExample();
        // 创建 5 个线程执行任务
        for (int i = 0; i < 5; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        // 调用 synchronized 修饰的 this 方法
                        example.thisMethod();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }
    /**
     * synchronized 修饰的 this 方法
     * @throws InterruptedException
     */
    public void thisMethod() throws InterruptedException {
        synchronized (this) {
            System.out.println(String.format("当前执行线程:%s,执行时间:%s",
                    Thread.currentThread().getName(), new Date()));
            TimeUnit.SECONDS.sleep(1);
        }
    }
}


以上程序的执行结果如下:


微信图片_20220120201101.jpg


从上述结果可以看出,以上线程使用的都是同一把锁。

相关文章
|
6月前
|
安全 Java
Synchronized和Lock的区别
Synchronized和Lock的区别
67 0
|
Java
synchronized和lock的区别
synchronized和lock的区别
83 0
|
Java
Lock 和 Synchronized的区别?
本章主要讲解了Lock 和 Synchronized的区别和知识点
51 0
|
Java
synchronized和Lock的区别
synchronized和Lock的区别
71 0
synchronized(this)、synchronized(class)和synchronized(Object)的区别
synchronized(this)、synchronized(class)和synchronized(Object)的区别
121 0
synchronized(this)、synchronized(class)和synchronized(Object)的区别
|
前端开发 Java Spring
方法上加上 synchronized 就可以了么
方法上加上 synchronized 就可以了么
|
安全 Java
Lock和Synchronized的区别
Lock和Synchronized的区别
Lock和Synchronized的区别
|
Java
JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别
利用实例介绍JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别
140 0
JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别
synchronized(this)、synchronized(.class)、锁静态方法、方法区别?
synchronized(this)、synchronized(.class)、锁静态方法、方法区别?
synchronized 加锁 this 和 class 的区别!(5)
synchronized 加锁 this 和 class 的区别!(5)
124 0
synchronized 加锁 this 和 class 的区别!(5)