博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java线程synchronized
阅读量:5939 次
发布时间:2019-06-19

本文共 1551 字,大约阅读时间需要 5 分钟。

假设一台5个人同时要上网

每个人上时间1~5分钟不等

加锁同步情况:排队上网,每个人都在自己的上网时间完毕后出来。

 

静态方法同步代码

class Person extends Thread{    private Random r = new Random();    private int Num;    public Person(int Num){        this.Num = Num;    }    public void run() {        toileting(Num, r.nextInt(4) + 1);    }    public static synchronized void toileting(int tNo2, int time){        for (int i = 0; i < time; i++) {            System.out.println("第" + tNo2 + "位, 上了" + i + "分钟");        }    }}public class SetTest01 {    public static void main(String[] args) {        //五个人        for (int i = 0; i < 4; i++) {            new Person(i).start();        }    }}
View Code

代码块同步代码

class Person extends Thread{    private Random r = new Random();    private int Num;    public Person(int Num){        this.Num = Num;    }    public void run() {        synchronized (Person.class) {
//此处锁可自定义定,但必须相同,用不同锁无效 for (int i = 0; i < Num; i++) { System.out.println("第" + Num + "位, 上了" + i + "分钟"); } } }}public class SetTest01 { public static void main(String[] args) { //五个人 for (int i = 0; i < 4; i++) { new Person(i).start(); } }}
View Code

 

第0位, 上了0分钟第0位, 上了1分钟第0位, 上了2分钟第0位, 上了3分钟第2位, 上了0分钟第2位, 上了1分钟第2位, 上了2分钟第1位, 上了0分钟第1位, 上了1分钟第1位, 上了2分钟第1位, 上了3分钟第3位, 上了0分钟第3位, 上了1分钟第3位, 上了2分钟

 

未加锁不同步情况:一个人本来要连续上3分钟,结果上了1分钟就出来了。第二个人就进去了,本来要上连续5分钟,结果2分钟就出来了。。。直到结束

第1位, 上了0分钟第3位, 上了0分钟第0位, 上了0分钟第2位, 上了0分钟第0位, 上了1分钟第3位, 上了1分钟第0位, 上了2分钟第2位, 上了1分钟第0位, 上了3分钟第3位, 上了2分钟

 

转载于:https://www.cnblogs.com/ji84899/p/4950708.html

你可能感兴趣的文章
MP4视频播放器代码
查看>>
Nginx 匹配 iphone Android 微信
查看>>
ldap
查看>>
Yum软件仓库配置
查看>>
linux 压缩与解压总结
查看>>
mysql脚本1064 - You have an error in your SQL syntax; check the manual
查看>>
nessus 本地扫描(一)
查看>>
linux服务器磁盘陈列
查看>>
python----tcp/ip http
查看>>
我的友情链接
查看>>
第一本docker书学习笔记1-3章
查看>>
一個典型僵尸網絡淺析
查看>>
vmware克隆Centos6.4虚拟机网卡无法启动问题
查看>>
dba学习
查看>>
asterisk配置
查看>>
GA操作步骤和技巧(二)——用户行为分析
查看>>
shell中while循环里使用ssh的注意事项
查看>>
SHELL获取计算机外网ip的几种写法
查看>>
博客正在搬迁中
查看>>
触发器与存储过程的区别
查看>>