java(并发编程)多线程入门到精通[张振华.jack]

java(并发编程)多线程入门到精通[张振华.jack]

ID:33592292

大小:877.67 KB

页数:37页

时间:2019-02-27

java(并发编程)多线程入门到精通[张振华.jack]_第1页
java(并发编程)多线程入门到精通[张振华.jack]_第2页
java(并发编程)多线程入门到精通[张振华.jack]_第3页
java(并发编程)多线程入门到精通[张振华.jack]_第4页
java(并发编程)多线程入门到精通[张振华.jack]_第5页
资源描述:

《java(并发编程)多线程入门到精通[张振华.jack]》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、自我介绍Java多线程从入门到精通------Java并发编程详解张振华.JackQQ:494460705Mail:zhangzhenhua846@126.com2015年6月10年Java开发1张振华.Jack目录I.JAVA-Thread概念II.Thread的三种实现方法III.生命周期IV.安全和锁V.Concurrent包(安全集合类、安全Queue)VI.线程阻塞机制VII.线程池详解(原理,实际使用)VIII.线程的监控,分析方法IX.扩展数据库连接池2张振华.Jack概念A.什么是进程A.是资源

2、分配的最小单位;(资源,包括各种表格、内存空间、磁盘空间)B.同一进程中的多条线程将共享该进程中的全部系统资源B.什么是线程A.线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。寄存器可被用来存储线程内的局部变量B.线程是CPU调度的最小单位C.什么是并行和并发A.并行运行:总线程数<=CPU数量*核心数:B.并发运行:总线程数>CPU数量*核心数:(时间片轮转进程调度算法)3张振华.JackThread的三种实现方法4张振华.Jack线程的生命周期/常用方法获得当前线程的副本:Threadcur

3、rent=Thread.currentThread();例如多线程上传的文件的进度条可以使用5张振华.Jack何为安全什么是安全的?先问个问题是不是不加锁就不是线程安全的,个人感觉只要你代码里面没有变量互串,线程之间互不影响,例如server的设计方法;非单例代码也是安全的,注意只有单例模式下才会有锁的问题6张振华.Jack锁一.隐式锁:synchronized(同一个对象锁下面的,synchronized区域是互斥的)二.方法锁(默认是当前对象的锁)三.代码快锁(性能高于方法锁,可以指定哪个对象的锁)四

4、.显示锁:java.util.concurrent.lock(需要手动关/开),注意自己的代码逻辑不要产生死锁了五.关键字:volatile(线程在每次使用变量的时候,都会读取变量修改后的最的值)六.其实是有风险的,并行情况下不一定正确,有可能两个线程同时取到最后修改的值七.原子操作:java.util.concurrent.atomic(AtomicBoolean,AtomicLong,AtomicInteger等一些类库)八.(如果查看源码的话,实现原理是volatile,相对安全的,个人觉得不绝对)7张振

5、华.Jack问一个问题,请看以下下面的锁有用吗8张振华.Jack这种锁是没有用的啊,因为synchronized的对象不一样9张振华.Jack常用的Concurrent线程安全类库java.util.concurrent.ConcurrentHashMapjava.util.concurrent.ConcurrentLinkedQueuejava.util.concurrent.ConcurrentMapjava.util.concurrent.ConcurrentNavigableMapjava.

6、util.concurrent.ConcurrentSkipListMapjava.util.concurrent.ConcurrentSkipListSet实现原理和算法类似lock的10张振华.Jack安全线程阻塞队列(1)java.util.concurrent.BlockingQueueBlockingQueue很好的解决了多线程中高效安全“传输”数据的问题;基于java.util.Queue的基础上做了一些线程安全的封装;(对以下方法做了一些的扩展和封装)11张振安全线程阻塞队列(2)Bloc

7、kingQueue常用的儿子1.ArrayBlockingQueue基于数组的阻塞队列实现,在ArrayBlockingQueue内部,维护了一个定长数组,以便缓存队列中的数据对象,这是一个常用的阻塞队列,除了一个定长数组外,ArrayBlockingQueue内部还保存着两个整形变量,分别标识着队列的头部和尾部在数组中的位置;2.LinkedBlockingQueue基于链表的阻塞队列,同ArrayListBlockingQueue类似,其内部也维持着一个数据缓冲队列(该队列由一个链表构成)3.Dela

8、yQueueDelayQueue中的元素只有当其指定的延迟时间到了,才能够从队列中获取到该元素。DelayQueue是一个没有大小限制的队列,因此往队列中插入数据的操作(生产者)永远不会被阻塞,而只有获取数据的操作(消费者)才会被阻塞。使用场景:DelayQueue使用场景较少,但都相当巧妙,常见的例子比如使用一个DelayQueue来管理一个超时未响应的连接队列。4.Priorit

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

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

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