java中synchronized锁对象的问题总结
来源:互联网 发布:mac抹掉磁盘重装黑屏 编辑:程序博客网 时间:2024/06/06 01:08
本人在业务执行中发现map中的数据打印有误,因此测试了一下,发现在使用synchronized时map对象是否使用static还是有很大的区别
代码简单,两个类,实例如下:
Main方法类
public class TestMain { public static void main(String[] args) { TestSyn t1 = new TestSyn(); TestSyn t2 = new TestSyn(); Thread ta = new Thread(t1, "A"); Thread tb = new Thread(t2, "B"); ta.start(); tb.start(); }}
Syn类
使用static修饰
public class TestSyn implements Runnable { public static Map<String,String> smap = new HashMap<String,String>(); public void run() { synchronized (smap) { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + " synchronized loop " + smap.size()); smap.put(i+"",Thread.currentThread().getName()+i); } } }}
打印如下
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 5
B synchronized loop 5
B synchronized loop 5
B synchronized loop 5
B synchronized loop 5
不使用static修饰
public class TestSyn implements Runnable { public Map<String,String> smap = new HashMap<String,String>(); public void run() { synchronized (smap) { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + " synchronized loop " + smap.size()); smap.put(i+"",Thread.currentThread().getName()+i); } } }}
打印如下
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4
代码执行结果,显示了在锁对象时,使用static和不使用的不同之处,如果要在同步代码块中使用map的内容的话就会造成问题,因此记录下来共勉
阅读全文
0 0
- java中synchronized锁对象的问题总结
- java中synchronized锁定对象问题
- Java synchronized 关于锁的对象顺序问题
- Java中synchronized总结
- 并发编程学习总结(八) :java中synchronized关键字使用详解 对象锁的相关条件的使用(2)
- 深入理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
- java的synchronized总结
- JAVA中synchronized同步总结
- Java多线程总结(二):理解对象锁 & synchronized和Lock的区别
- synchronized锁住的对象问题
- JAVA中synchronized的使用以及对象锁和类锁的概念
- Synchronized(一)------java中Synchronized的用法
- 学习java synchronized的总结
- Java中使用同步关键字synchronized需要注意的问题
- synchronized对象锁的同步和异步问题
- java synchronized的理解以及内置锁和对象锁
- java中synchronized用法基本总结
- java中synchronized的用法
- 解决使用Oracle库利用MyBatis配置文件逆向生成的实体类时mapping.xml里有重复的节点问题
- 如何用迅雷或QQ旋风下载百度云上的资源?
- jQuery.validate验证时用的是Form输入表单的name属性
- 51Nod 1090 3个数和为0
- java中的native关键字
- java中synchronized锁对象的问题总结
- Lambda表达式
- [RK3288][Android6.0] 调试笔记 --- UVC Camera jpg和yuv数据帧dump
- Myeclipse 2014 破解补丁 附官方安装包与图文使用方法
- 微信公众平台开发历程(二)
- QT实现一个登录界面
- 关于grep和egrep的一些整理
- iOS中UICollectionView实现单个cell滚动翻页并放大cell
- 如何通过网页查看真机或者虚拟机的数据库