摘要: 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法 对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的。 原因很简单:锁对象只有一个 一次只能被一个线程拥有 而访问非同步方法不需要锁对象 阅读全文
posted @ 2015-08-28 15:35 yweihainan 阅读(1860) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.cnblogs.com/dolphin0520/p/3920385.html 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须 阅读全文
posted @ 2015-08-28 15:13 yweihainan 阅读(306) 评论(0) 推荐(1) 编辑
摘要: 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行。在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 1 Timerjava.lang.Object | java.util.Timer public class Timer extends Obj 阅读全文
posted @ 2015-08-28 15:01 yweihainan 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 下面内容转载自:http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: 这里直接实现一个Timer 阅读全文
posted @ 2015-08-28 14:47 yweihainan 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callab 阅读全文
posted @ 2015-08-28 14:18 yweihainan 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 一 关键类的实现 1 ThreadPoolExecutor类 java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。 下面我们来看一下ThreadPoolExecutor类的具体实现源码。 阅读全文
posted @ 2015-08-28 11:59 yweihainan 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务 阅读全文
posted @ 2015-08-28 10:56 yweihainan 阅读(55664) 评论(2) 推荐(4) 编辑
摘要: 原文:http://www.cnblogs.com/dolphin0520/p/3932906.html 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是: 阅读全文
posted @ 2015-08-28 10:28 yweihainan 阅读(639) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。 其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒 阅读全文
posted @ 2015-08-28 10:00 yweihainan 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 一 概述 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能 因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。 因此Java5.0开始针对多线程并发访问设 阅读全文
posted @ 2015-08-28 09:52 yweihainan 阅读(680) 评论(0) 推荐(0) 编辑