Doctoryang

业精于勤荒于嬉!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  10 随笔 :: 1 文章 :: 0 评论 :: 0 Trackbacks

JDK5线程并发包

1)AtomicInteger

使用原子方式更新int值


2)创建线程池

a)创建固定大小的线程池

ExecutorService threadPool = Executors.newFixedThreadPool(10);//创建一个有10个线程的线程池


b)创建缓存线程池

Executors.newCachedThreadPool();

创建一个可根据需要创建新线程的线程池,可自动调整线程的多少


c)创建单线程的线程池

Executors.newSingleThreadExecutor();

该线程池里面只有一个线程,如果死掉了也可以自动再创建一个,保证永远有一个


d)创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行

ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(3);

threadPool.schedule(Runnable command,long delay,TimeUnit unit)

创建并执行在给定延迟后启用的一次性操作


threadPool.scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit)

创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期.

也就是将在initialDelay后开始执行,然后在initialDelay+period后执行,接着在initialDelay + 2 * period后执行,依此类推


不管哪种创建方式其实都是由ThreadPoolExecutor类来实现的


3)Callable&Future

a)Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的。

b)Callable要采用ExecutorSevice的submit方法提交,返回的future对象可以取消任务。

c)CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象。


4)Lock&Condition

Lock ---> synchronized

Lock lock = new ReentrantLock();

ReadWriteLock rwlock = new ReentrantReadWriteLock();


private Condition condition = lock.newCondition();

condition.await();  ---> wait()

condition.signal(); ---> notify()


5)Semaphore

final Semaphore semaphore = new Semaphore(3);


6)CyclicBarrier

7)CountDownLatch

8)Exchanger

9)ArrayBlockingQueue(阻塞队列)

10)ConcurrentHashMap

CopyOnWriteArrayList

CopyOnWriteArraySet

posted on 2016-09-06 17:02 Doctoryang 阅读(114) 评论(0)  编辑  收藏 所属分类: CoreJava

只有注册用户登录后才能发表评论。


网站导航: