同步方法和同步代码快
来源:互联网 发布:js计算价格的误差 编辑:程序博客网 时间:2024/05/16 19:55
今天遇到一题关于同步方法和同步代码快的问题,之前没看到过所以查了一下资料,总结了一下在这里记录一下吧,以便自己日后学习
原问题是:同步方法和同步代码块的区别。
同步方法
public synchronized void method1(){}同步代码块,其中lockObject可以为任何不为null值的对象public void method2(){ synchronized (lockObject){}}
java中每个对象都有同步锁,同步方法是指进入该方法时需要获取this对象的同步锁,而同步代码块则是可以指定需要获取哪个对象的同步锁做了一个简单测试
public class SynObj { public synchronized void methodA() { System.out.println("methodA"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } public void methodB() { synchronized(this) { System.out.println("methodB"); } } public void methodC() { String str = "test"; synchronized (str) { System.out.println("methodC"); } }}
public class TestSyn {public static void main(String[] args) { final SynObj obj = new SynObj(); Thread t1 = new Thread(new Runnable() { @Override public void run() { obj.methodA(); } }); t1.start(); Thread t2 = new Thread(new Runnable() { @Override public void run() { obj.methodB(); } }); t2.start(); Thread t3 = new Thread(new Runnable() { @Override public void run() { obj.methodC(); } }); t3.start(); }}输出结果:
methodA.....methodC.....//methodB会5s才会打印出来methodB.....
参考:http://m.blog.csdn.net/article/details?id=52266950
0 0
- 同步方法和同步代码快
- 同步代码快和同步方法
- 多线程_同步代码快的锁及同步方法应用和锁的问题
- 多线程-同步代码快的锁及同步方法应用和锁的问题
- java同步方法和同步代码块
- Synchronized 同步方法和同步代码块
- 同步方法和同步代码块
- java同步方法和同步代码块
- 同步方法和同步代码块
- java同步方法和同步代码块
- java同步方法和同步代码块的区别
- Java中同步方法和同步代码块
- java同步方法和同步代码块的区别
- java多线程——同步方法和同步代码块
- java同步代码块和同步方法的区别
- 同步方法和同步代码块的区别是什么
- 同步代码和同步方法、锁的理解
- 多线程---java同步方法和同步代码块的区别
- [java容器]Iterator迭代器
- 第23题: Merge k Sorted Lists
- 数组对象排序
- 【bug】previously initiated loading for a different type with name "javax/servlet/ServletContext"(142)
- Redis 的初步使用
- 同步方法和同步代码快
- Vue2 + iVIew 后台管理系统解决方案
- 树的重心 背诵用模板
- 【读过的书,留下的迹】Java并发编程实战
- 设计模式---装饰器模式(C++实现)
- C/C++的一些知识点归纳(一)
- 《圈圈教你玩USB》 第二章 USB 硬件系统设计_测试程序的编写和调试——看书笔记
- java.util.Iterator细说
- 字符串详解