`
wenshao
  • 浏览: 269256 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

新写了一个Java并发程序设计教程

阅读更多
新写了一个Java并发程序设计教程, 用于公司内部培训的,和2007年写的那个相比,内容更翔实一些。

内容列表

1、使用线程的经验:设置名称、响应中断、使用ThreadLocal
2、Executor :ExecutorService和Future ☆ ☆ ☆
3、阻塞队列 : put和take、offer和poll、drainTo
4、线程间的协调手段:lock、condition、wait、notify、notifyAll ☆ ☆ ☆
5、Lock-free: atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList ☆ ☆ ☆
6、关于锁使用的经验介绍
7、并发流程控制手段:CountDownlatch、Barrier
8、定时器: ScheduledExecutorService、大规模定时器TimerWheel
9、并发三大定律:Amdahl、Gustafson、Sun-Ni
10、神人和图书
11、业界发展情况: GPGPU、OpenCL
12、复习题

下载地址:
http://files.cnblogs.com/jobs/Java%e5%b9%b6%e5%8f%91%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e6%95%99%e7%a8%8b.pdf 

JavaEye下载地址:
http://dl.iteye.com/topics/download/9b2e8e75-ed5f-3f6a-b5df-c725e928dbd8

欢迎看了之后写反馈给我。
博客园的文章地址:

http://www.cnblogs.com/jobs/archive/2010/07/29/1788156.html
分享到:
评论
14 楼 DarrenD 2016-08-16  
不错 并发很基础的介绍
13 楼 denvelope 2013-10-22  
denvelope 写道
lsk 写道
hi,楼主. 我发现了一个错误(应该是笔误)
class BlockingQ{
private Object notEmpty= newObject();
private Queue<Object> linkedList= new LinkedList<Object>();
public Object take() throwsInterruptedException{
synchronized(notEmpty) {
if(linkedList.size() == 0) {
notEmpty.wait();
}
return linkedList.poll();
}
}
public void offer(Object object) {
synchronized(notEmpty) {
if(linkedList.size() == 0) {
notEmpty.notifyAll();
}
linkedList.add(object);
}
}
}


offer 方法当中的 if(linkedList.size()==0) 应该是 linkedList.size()!=0  ....



size()==0是正确的
博主的错误在于先进先出队列,不应该用linkedList.poll(),应改为pollLast(),否则是一个栈操作


是我搞错了,唉,add()是加在队列末尾的
12 楼 denvelope 2013-10-21  
lsk 写道
hi,楼主. 我发现了一个错误(应该是笔误)
class BlockingQ{
private Object notEmpty= newObject();
private Queue<Object> linkedList= new LinkedList<Object>();
public Object take() throwsInterruptedException{
synchronized(notEmpty) {
if(linkedList.size() == 0) {
notEmpty.wait();
}
return linkedList.poll();
}
}
public void offer(Object object) {
synchronized(notEmpty) {
if(linkedList.size() == 0) {
notEmpty.notifyAll();
}
linkedList.add(object);
}
}
}


offer 方法当中的 if(linkedList.size()==0) 应该是 linkedList.size()!=0  ....



size()==0是正确的
博主的错误在于先进先出队列,不应该用linkedList.poll(),应改为pollLast(),否则是一个栈操作
11 楼 lsk 2011-07-28  
hi,楼主. 我发现了一个错误(应该是笔误)
class BlockingQ{
private Object notEmpty= newObject();
private Queue<Object> linkedList= new LinkedList<Object>();
public Object take() throwsInterruptedException{
synchronized(notEmpty) {
if(linkedList.size() == 0) {
notEmpty.wait();
}
return linkedList.poll();
}
}
public void offer(Object object) {
synchronized(notEmpty) {
if(linkedList.size() == 0) {
notEmpty.notifyAll();
}
linkedList.add(object);
}
}
}


offer 方法当中的 if(linkedList.size()==0) 应该是 linkedList.size()!=0  ....
10 楼 xiuzhi 2011-02-18  
喜欢lz的文档风格,期待更多东西
9 楼 wenshao 2011-01-15  
_bulrush 写道
_bulrush 写道
楼主,您好~
能给告诉下Synchronization Algorithms and Concurrent Programming的下载地址么?
或者发到我邮箱里,多谢~

_bulrush 写道
楼主,您好~
能给告诉下Synchronization Algorithms and Concurrent Programming的下载地址么?
或者发到我邮箱里,多谢~

我的邮箱luwei@yinzhijie.com

我是托朋友美国买的,没有下载
8 楼 _bulrush 2011-01-14  
_bulrush 写道
楼主,您好~
能给告诉下Synchronization Algorithms and Concurrent Programming的下载地址么?
或者发到我邮箱里,多谢~

_bulrush 写道
楼主,您好~
能给告诉下Synchronization Algorithms and Concurrent Programming的下载地址么?
或者发到我邮箱里,多谢~

我的邮箱luwei@yinzhijie.com
7 楼 _bulrush 2011-01-14  
楼主,您好~
能给告诉下Synchronization Algorithms and Concurrent Programming的下载地址么?
或者发到我邮箱里,多谢~
6 楼 moshalanye 2010-12-31  
文档能力很强啊,浏览了下,后面的感觉比较眩。

感觉CAS讲的比较少,多核cached同步mesi协议貌似没讲。
5 楼 zgzdzh 2010-12-29  
很给力。。。阿里果然牛人多。。。
4 楼 vb2005xu 2010-12-23  
这个写的很不错 很棒
3 楼 sohuexe 2010-12-23  
弯弯古德!
2 楼 sagahl 2010-09-30  
温少,你的课非常精彩!
1 楼 javastyle 2010-07-31  
膜拜大侠,从bluedavy那下载过你的PPT,写的非常棒.... Thanks

相关推荐

Global site tag (gtag.js) - Google Analytics