什么是线程安全?怎么保证线程安全? sychronized 底层实现原理

268 阅读1分钟

线程安全:在多条线程访问的时候,我们的程序还能按照我们预期的行为去执行 用 synchronized(同步)关键字 来保证线程安全 具体表现为以下3种形式。 对于普通同步方法,锁是当前实例对象。

public synchronized void HelloWorld(){

方法体;
}

主方法

image.png MyThread3 helloWord 没加synchronized打印,此时我们其他线程进行了资源抢占

image.png helloWord加 synchronized后打印

image.png 对于静态同步方法,锁是当前类的Class对象。

public synchronized static void HelloWorld(){
        方法体;
}

主方法

image.png MyThread2 helloWord 没加 synchronized 打印,此时我们其他线程进行资源抢占

image.png helloWord 加 synchronized后打印

image.png

image.png 对于同步方法块,锁是Synchonized括号里配置的对象

synchronized (对象) { //对象不能为Intger 对象,
   方法体
}

主方法

image.png MyThread5 没加sychronized 打印,此时我们其他线程进行资源抢占

image.png 加 sychronized 打印

image.png 此时我们看到 线程对 student 对象进行了同步操作