社区
Java EE
帖子详情
Java中非线程安全的类如何转换成线程安全的类?
wyhap216i
2013-10-20 08:34:35
如题,非线程安全的类如何转换成线程安全的类?
有哪些方法,怎么用?
...全文
183
6
打赏
收藏
Java中非线程安全的类如何转换成线程安全的类?
如题,非线程安全的类如何转换成线程安全的类? 有哪些方法,怎么用?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Defonds
2013-10-21
打赏
举报
回复
http://blog.csdn.net/defonds/article/category/1363593
Java并发编程实践.pdf[带书签]
我的波塞冬
2013-10-21
打赏
举报
回复
不错,学习了。
失落夏天
2013-10-20
打赏
举报
回复
如何将一个类改造为线程安全 对这个问题,好多人可能第一反应就是使用syschronized关键字,诚然应用这个关键字可以解决问题(仍是有条件线程安全的且低效的),但是在无意中看java源码时,看到了另一种更高效的方式—采用lock的方式。 在ReentrantReadWriteLock的源码注释中,作者写了这样一段代码: class RWDictionary { private final Map<String, Data> m = new TreeMap<String, Data>(); private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); private final Lock r = rwl.readLock(); private final Lock w = rwl.writeLock(); public Data get(String key) { r.lock(); try { return m.get(key); } finally { r.unlock(); } } public String[] allKeys() { r.lock(); try { return m.keySet().toArray(); } finally { r.unlock(); } } public Data put(String key, Data value) { w.lock(); try { return m.put(key, value); } finally { w.unlock(); } } public void clear() { w.lock(); try { m.clear(); } finally { w.unlock(); } } } 这段代码同样实现了对TreeMap本来非线程安全的类,包装成了一个线程安全的类,且不存在Collections.SynchronizedMap的put_if_absent问题。 http://www.cnblogs.com/weiwelcome0/archive/2012/05/25/2518558.html
浪里花
2013-10-20
打赏
举报
回复
最简单的就是加锁了
teemai
2013-10-20
打赏
举报
回复
线程安全不安全其实是方法的访问/变量的访问。 在你需要线程安全的地方加上锁/同步方法(变量),此时就是线程安全的
keke8247
2013-10-20
打赏
举报
回复
加线程锁 synchronized(锁){ 临界区代码 }
java
非
线程安全
_
java
中
线程安全
和非
线程安全
的集合
线程安全
数组非
线程安全
安全Collection多线程VectorideArrayList、LinkedListuiHashSet、TreeSetspaMap.netHashTable线程HashMap、TreeMapcode字符串对象StringBufferStringBuilder1、ArrayList和vector区别Vector和ArrayList间惟一的区别就是Vector每一个方法都自带...
JAVA
中的
线程安全
与非
线程安全
原文:http://blog.csdn.net/xiao__gui/article/details/8934832ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是
Java
面试中常见的基础问题。面对这样的问题,回答是:ArrayList是非
线程安全
的,Vector是
线程安全
的;HashMa
Java
中的
线程安全
和非
线程安全
原文:http://blog.csdn.net/xiao__gui/article/details/8934832 ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是
Java
面试中常见的基础问题。面对这样的问题,回答是:ArrayList是非
线程安全
的,Vector是
线程安全
的;Has...
【
Java
EE】JUC(
java
.util.concurrent)的常见
类
以及
线程安全
的集合
类
1、JUC(
java
.util.concurrent)的常见
类
1.1、Callable接口的用法(创建线程的一种写法) 1.2、ReentrantLock可重入互斥锁 1.2.1、ReentrantLock和synchronized的区别 1.2.2、如何选择使用哪个锁 1.3、Semaphore信号量 1.4、CountDownLatch 2、
线程安全
的集合
类
2.1、多线程环境使用ArrayList 2.2、多线程使用队列 2.3、多线程使用哈希表 2.3.1、HashT
Java
中非
线程延时,Robot
类
。
java
中有一个Robot
类
该
类
有一个方法为delay(ms); 使用此
类
时必须将该
类
实例化。 实现代码如下: import
java
.awt.Robot; import
java
.util.Random; public class Fei { public static void main(String[] args) throws Exception{ Random ran=n...
Java EE
67,512
社区成员
225,880
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章