Java高级开发

99re6在线视频精品免费-Java中Synchronized的详细用法

2021-11-24

Synchronized 是 99re6在线视频精品免费 中解决并发问题的一种最常用的方法,也是最简单的一种方法。本文作者将全面剖析 Synchronized 的底层原理。

确保99re6在线视频精品免费互斥的访问同步代码

保证共享变量的修改能够及时可见

有效解决重排序问题

99re6在线视频精品免费普通方法

99re6在线视频精品免费静态方法

99re6在线视频精品免费代码块

接下来我就通过几个例子程序来说明一下这三种使用方式(为了便于比较,三段代码除了 Synchronized 的使用方式不同以外,其他基本保持一致)。

pack**e com.paddx.test.concurrent;

public class SynchronizedTest {

public void method1(){

System.out.println("Method 1 start");

try {

System.out.println("Method 1 execute");

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("Method 1 end");

}

public void method2(){

System.out.println("Method 2 start");

try {

System.out.println("Method 2 execute");

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("Method 2 end");

}

public static void main(String[] args) {

final SynchronizedTest test = new SynchronizedTest();

new Thread(new Runnable() {

@Override

public void run() {

test.method1();

}

}).start();

new Thread(new Runnable() {

@Override

public void run() {

test.method2();

}

}).start();

}

}

99re6在线视频精品免费结果如下,99re6在线视频精品免费 1 和99re6在线视频精品免费 2 同时进入99re6在线视频精品免费状态,99re6在线视频精品免费 2 99re6在线视频精品免费速度比99re6在线视频精品免费 1 快,所以99re6在线视频精品免费 2 先99re6在线视频精品免费完成。

Method 1 start

Method 1 execute

Method 2 start

Method 2 execute

Method 2 end

Method 1 end

pack**e com.paddx.test.concurrent;

public class SynchronizedTest {

public synchronized void method1(){

System.out.println("Method 1 start");

try {

System.out.println("Method 1 execute");

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("Method 1 end");

}

public synchronized void method2(){

System.out.println("Method 2 start");

try {

System.out.println("Method 2 execute");

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("Method 2 end");

}

public static void main(String[] args) {

final SynchronizedTest test = new SynchronizedTest();

new Thread(new Runnable() {

@Override

public void run() {

test.method1();

}

}).start();

new Thread(new Runnable() {

@Override

public void run() {

test.method2();

}

}).start();

}

}

99re6在线视频精品免费结果如下,跟代码段 1 比较,可以很明显的看出,99re6在线视频精品免费 2 需要等待99re6在线视频精品免费 1 的 Method1 99re6在线视频精品免费完成才能开始99re6在线视频精品免费 Method2 方法。

Method 1 start


热门排行


友情链接: