摘要: 在 jdk1.5 之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,Lock 接口提供了与 synchronized 关键字类似的同步功能,但需要在使用时手动获取锁和释放锁。 lock锁 也叫显示锁 大家看下这个lock锁: lock是个接口 这个接口下面很多锁: 对于lock锁 阅读全文
posted @ 2018-10-23 18:41 toov5 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 从https://www.cnblogs.com/toov5/p/9837373.html 可以看到他的打印是一片一片的,这边博客介绍怎么避免掉 使用notify 和 wait的时候 要注意 是在synchronize进行的,持有同一把锁 1.因为涉及到对象锁,他们必须都放在synchronized 阅读全文
posted @ 2018-10-23 17:56 toov5 阅读(1007) 评论(0) 推荐(0) 编辑
摘要: 多线程之间如何实现通讯 什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。 画图演示 多线程之间通讯需求 需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。 代码实现基本实现 下面我们看个例子 生产者 消费者 阅读全文
posted @ 2018-10-23 16:21 toov5 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 线程池里面的submit 先来说下这个函数submit() 如果有个需求,实现下载 每个线程都会http请求 进行下载操作 run方法的缺点之一就是 没有返回值!! 多线程下载,实现下载时候 会有下载进度。 主线程如何知道子线程执行完毕? run() 里面的业务实现完毕后 可以用notify wai 阅读全文
posted @ 2018-10-23 14:19 toov5 阅读(439) 评论(0) 推荐(0) 编辑
摘要: CPU密集 CPU密集的意思是该任务需要大量的运算,而没有阻塞,CPU一直全速运行。 CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程),而在单核CPU上,无论你开几个模拟的多线程,该任务都不可能得到加速,因为CPU总的运算能力就那些。 IO密集 IO密集型,即该任务需要大量的IO, 阅读全文
posted @ 2018-10-23 13:50 toov5 阅读(1331) 评论(0) 推荐(2) 编辑
摘要: 如果当前线程池中的线程数目小于corePoolSize,则每来一个任务,就会创建一个线程去执行这个任务; 如果当前线程池中的线程数目>=corePoolSize,则每来一个任务,会尝试将其添加到任务缓存队列当中,若添加成功,则该任务会等待空闲线程将其取出去执行;若添加失败(一般来说是任务缓存队列已满 阅读全文
posted @ 2018-10-23 12:49 toov5 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 前面的我那几个源码截图,大家可以自己点进去看看,共同点都是封装了 ThreadPoolExcutor这构造函数 无非就是传递的参数不一样~~ 比如 SingleThreadExecutor 就是这个构造函数: 下面我就介绍些这个构造函数: 提交一个任务到线程池中,线程池的处理流程如下: 1、判断线程 阅读全文
posted @ 2018-10-23 11:50 toov5 阅读(201) 评论(0) 推荐(0) 编辑