关于多线程的2个小验证

Posted 小胡的技术之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于多线程的2个小验证相关的知识,希望对你有一定的参考价值。

前言

1.验证synchronized(非this对象)与同步synchronized方法是异步调用的效果

2.验证多个线程调用同一个方法是随机的

代码实例

Service.java

ThreadA.java

关于多线程的2个小验证

ThreadB.java

关于多线程的2个小验证

Run.java

关于多线程的2个小验证

结果:

关于多线程的2个小验证

由于对象监视器不同,所以运行的结果就是异步的

验证多个线程调用同一个方法是随机的

MyList.java

关于多线程的2个小验证

MyThreadA.java

关于多线程的2个小验证

MyThreadB.java

关于多线程的2个小验证

Test.java

结果:

从运行的结果看,同步块中的代码是同步打印的,当前线程的“执行”和“退出”是成对出现的,但是线程A和线程B的执行确是异步的,这个就是有可能出现脏读的环境。

以上是关于关于多线程的2个小验证的主要内容,如果未能解决你的问题,请参考以下文章

关于Java的多线程Runnable的个人理解(基础,不讲概念)

关于多线程start()方法原理解读

关于多线程

聊聊保证线程安全的 10 个小技巧

Linux:详解多线程(线程概念线程控制—线程创建线程终止线程等待)

关于多线程的小笔记