Java并发程序设计教程

Java并发程序设计教程

ID:32290354

大小:1.59 MB

页数:43页

时间:2019-02-02

Java并发程序设计教程_第1页
Java并发程序设计教程_第2页
Java并发程序设计教程_第3页
Java并发程序设计教程_第4页
Java并发程序设计教程_第5页
资源描述:

《Java并发程序设计教程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、版本:2010-07-29Java并发程序设计教程温绍锦(昵称:温少)邮箱:szujobs@hotmail.com旺旺:shaojinwensjQQ:1420452Blog:http://www.cnblogs.com/jobs/旧时王谢堂前燕,飞入寻常百姓家。内容列表1、使用线程的经验:设置名称、响应中断、使用ThreadLocal2、Executor:ExecutorService和Future☆☆☆3、阻塞队列:put和take、offer和poll、drainTo4、线程间的协调手段:lock、c

2、ondition、wait、notify、notifyAll☆☆☆5、Lock-free:atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList☆☆☆6、关于锁使用的经验介绍7、并发流程控制手段:CountDownlatch、Barrier8、定时器:ScheduledExecutorService、大规模定时器TimerWheel9、并发三大定律:Amdahl、Gustafson、Sun-Ni10、神人和图书11、业界发展情况:GPGPU、OpenCL

3、12、复习题学习的过程,着重注意红星标识☆的内容,学完之后,要求能够回答复习题。启动线程的注意事项Threadthread=newThread("threadname"){Threadthread=newThread(){publicvoidrun(){publicvoidrun(){//doxxx//doxxx}1}3};};thread.start();thread.setName("threadname");thread.start();publicclassMyThreadextendsThrea

4、d{publicMyThread(){Threadthread=newThread(task);//传入任务super("threadname");thread.setName(“threadname");4}2thread.start();publicvoidrun(){//doxxxThreadthread=newThread(task,“threadname");}thread.start();}MyThreadthread=newMyThread();5thread.start();无论何种方式,

5、启动一个线程,就要给它一个名字!这对排错诊断系统监控有帮助。否则诊断问题时,无法直观知道某个线程的用途。要响应线程中断thread.interrupt();Threadthread=newThread("interrupttest"){Threadthread=newThread("interrupttest"){publicvoidrun(){publicvoidrun(){for(;;){for(;;){doXXX();try{if(Thread.interrupted()){doXXX();brea

6、k;}catch(InterruptedExceptione){}break;}}catch(Exceptione){}//handleException};1}thread.start();}}};3thread.start();publicvoidfoo()throwsInterruptedException{if(Thread.interrupted()){thrownewInterruptedException();}}2程序应该对线程中断作出恰当的响应。ThreadLocalThreadLoca

7、l顾名思义它是localvariable(线程局部变量)。它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值initialValue():T的副本,是每一个线程都可以独立地改变自己的副本,而不get():Tset(Tvalue)会和其它线程的副本冲突。从线程的角度看,就好像每一个remove()线程都完全拥有该变量。使用场景Tokeepstatewithathread(user-id,transaction-id,logging-id)Tocacheobjectswhichyouneed

8、frequently隐式传参注意:使用ThreadLocal,一般都是声明在静态变量中,如果不断的创建ThreadLocal而且没有调用其remove方法,将会导致内存泄露。任务的提交者和执行者为了方便并发执行任务,出现了一种专门用来执行任务的实现,也就是Executor。由此,任务提交者不需要再创建管理线程,使用更方便,也减少了开销。ExecutorServiceTaskSubmitterExecutorThreadExec

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。