
线程安全
文章平均质量分 59
fannk
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
遵循“安全构造”技术
在编写代码的时候,我们应该遵循“安全构造”技术,即在构造函数里面,不将this暴露给其它类。将this暴露出去有什么危险呢?接下来让我们来看一下,两种情况。1. 显示的this暴露public class FatherClass { FatherClass(){ Listen listen = new Listen(); //在父类中将t...原创 2011-09-28 14:48:46 · 110 阅读 · 0 评论 -
ThreadPool的实现
最近看hadoop的时候,无意中看到了concurrent包中的类,于是打算好好研究一下线程安全方面的东西。先自己实现一个线程池。然后和sun自带的threadpool比较一下,看自己的实现有什么问题。 1. ThreadPool 类,用于存储工作线程,在构造函数中创建线程,并启动线程package com.fnk.threadpool;import java.util.Vec...原创 2011-09-28 22:14:48 · 351 阅读 · 0 评论 -
ThreadPool2
添加了新的功能,可以设置调用线程为阻塞模式。可以关闭线程。 缺点:1. 队列中还有work,也会直接关闭线程的时候。 2. 直接创建线程,线程数不可控 疑问:enum是不是不可以synchronized的,有待测试。 改进:work队列可以用ArrayBlockingQueue 来做 参考:http://blog.youkuaiyun.com/linshutao/...原创 2011-09-29 21:55:13 · 88 阅读 · 0 评论 -
Thread.jone
1.Thread.jone其他文章的分析。http://www.blogjava.net/vincent/archive/2008/08/23/223912.html下面来说说我自己的看法:1. thread.jone是调用thread的wait方法,来实现阻塞当前线程的效果2.调用wait方法的前提是获得了对象的锁3.因此thread.jone是synchronized,...原创 2011-10-28 22:06:17 · 105 阅读 · 0 评论 -
Volatile
参考文献:http://www.iteye.com/topic/109150volatile的有什么优势? 1, 更大的程序吞吐量2, 更少的代码实现多线程3, 程序的伸缩性较好4, 比较好理解, 无需太高的学习成本 volatile有什么劣势? 1, 容易出问题2, 比较难设计volatile运算存在脏数据问题 实现的原理是volatile不再采用工作内存的形式,而...原创 2011-10-29 16:55:07 · 101 阅读 · 0 评论 -
Java Concurrency in practice 笔记
何为Escape, 类的成员变量理应不暴露给其他对象,但是却因为某些公有函数暴露出去了,这样就叫做Escape。接下来列举一些例子:1.class UnsafeStates { private String[] states = new String[] { "AK", "AL" ... }; public String[] getSta...原创 2011-10-30 20:26:07 · 109 阅读 · 0 评论 -
Thread Confinement
thread confinement就是线程范围上安全的 1.Ad-hoc Thread Confinement,当每个对象只被一个线程用时就是Confinement的 2. Stack Confinement,在栈上Confinement。如下animals就是Confinement的,因为是局部变量。public int loadTheArk(Collection<A...原创 2011-10-30 20:53:14 · 274 阅读 · 0 评论 -
刷新内存的问题
1. 请教一个问题:代码如下,当线程2运行的时候发现O.b = 2了,这说明O.a也更新了,但关键的问题是b是volatile的,会立即刷新内存,那么b的值肯定是立刻写回到主内存的 。但是因为a是取到工作内存中的,并在工作内存中更新,最后才会写回到主内存中,会不会有可能当b在主存更新了的时候,a没有被更新呢,线程2看到的值还是1?或者说代码是顺序执行的,只有当a的值写回到主内存中才会去执行更新b...原创 2011-11-02 17:56:32 · 200 阅读 · 0 评论 -
concurrent- ConcurrentLinkedQueue
ConcurrentLinkedQueue使用了Unsafe的cas机制保证了线程的安全,用peek方法为例 public class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, java.io.Serializable { pr...原创 2014-08-16 19:28:29 · 140 阅读 · 0 评论