在 Java 的多线程中,如何去判断给定的一个类是否是线程安全的(另外:synchronized 同步是否就一定能保证该类是线程安全的。)
2016-11-12 15:36
1581 查看
同步代码块和同步方法的区别:同步代码块可以传入任意对象,同步方法中 如果多个线程检查的都是一个新的对象,不同的同步锁对不同的线程不具有排他性,不能实现线程同步的效果,这时候线程同步就失效了。
两者的区别主要体现在同步锁上面。对于实例的同步方法,因为只能使用this来作为同步锁,如果一个类中需要使用到多个锁,为了避免锁的冲突,必然需要使用不同的对象,这时候同步方法不能满足需求,只能使用同步代码块(同步代码块可以传入任意对象);
两者的区别主要体现在同步锁上面。对于实例的同步方法,因为只能使用this来作为同步锁,如果一个类中需要使用到多个锁,为了避免锁的冲突,必然需要使用不同的对象,这时候同步方法不能满足需求,只能使用同步代码块(同步代码块可以传入任意对象);
相关文章推荐
- 在 Java 的多线程中,如何去判断给定的一个类是否是线程安全的(另外:synchronized 同步是否就一定能保证该类是线程安全的。)
- 如何实现多个线程同步 (2013-11-10 12:07:24)转载▼ 标签: it 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题,Java实现线程同步的方法很多
- 【Java面试题】26 多线程有几种实现方法?同步有几种实现方法? 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
- java怎么判断两个Set 里的对象的值是否相同【两个set中的值是否相等】、java treeset和hashset如何判断元素是否相同【即对象是否完全相同;利用一个set去除重复元素】
- java如何做到判断一个字符串是否是数字
- JVM如何判断一个Java对象是否可以回收
- 【摘】给定一些单元格的坐标,如何判断它们是否能合并为一个单元格?
- Java多线程有哪几种实现方式? Java中的类如何保证线程安全? 请说明ThreadLocal的用法和适用场景(面试题)
- java中如何判断一个子类方法是否已经被重写
- JVM如何判断一个Java对象是否可以回收
- Java 如何判断一个字符串中是否包含某一 子字符串
- Java多线程有哪几种实现方式? Java中的类如何保证线程安全? 请说明ThreadLocal的用法和适用场景
- 如何判断一个GPS点是否在以另一个GPS点为圆心100米为半径的圆内(Java代码)
- java如何判断一个linux下的文件是否为链接文件。
- JAVA 如何判断一个字符串是否在一个字符串数组中?(好的编程习惯)
- java中如何判断一个数是否为正整数(多种种方式比较有意思)对时间处理也可以
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- Java怎么判断一个静态方法是否要加synchronized?
- 【Java之Servlet(二)】servlet是单例多线程,以及多线程下如何保证线程安全
- java中如何判断一个字符串数组中是否包含一个字符