Java线程-新特性

来源:互联网 发布:ubuntu 14.04网卡配置 编辑:程序博客网 时间:2024/04/27 20:17
这里总结一下1.5以后java线程的新特性内容。
具体使用和细节可以直接通过API查看。
这里只是总结一下都有什么内容。方便自己查看。

1.线程池 Executors

固定大小的线程池:
ExecutorService pool = Executors.newFixedThreadPool(size);

单任务线程池:
ExecutorService pool = Executors.newSingleThreadExecutor();

可变尺寸的线程池:
ExecutorService pool = Executors.newCachedThreadPool();


延迟连接池:
ScheduledExecutorService pool = Executors.newScheduledThreadPool(size);

单任务延迟连接池:
ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor();

自定义线程池:
ThreadPoolExecutor pool = new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime,TimeUnit.MILLISECONDS,bqueue);

corePoolSize--池中所保存的线程数,包括空闲线程。
maximumPoolSize--池中允许的最大线程数。
keepAliveTime--当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。
TimeUnit--参数的时间单位。
bqueue--执行前用于保持任务的队列。BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(size);

自定义线程池可以获取到当前线程池的尺寸、正在执行任务的线程数、工作队列等信息。

2.有返回值的线程 Callable Future

实现Callable
Future f = Executor.submit(callable);f.get();

3.锁 ReadWriteLock Lock

锁:
Lock lock = new ReentrantLock();

读写锁:
ReadWriteLock lock = new ReentrantReadWriteLock(false); 

4.信号量 Semaphore
Semaphore sp = new Semaphore(size);sp.acquire(x);//信号许可sp.release(x);//信号释放

5.阻塞队列 BlockingQueue
BlockingQueue bqueue = new ArrayBlockingQueue(20);

6.阻塞栈 BlockingDeque
BlockingDeque bDeque = new LinkedBlockingDeque(20);

7.条件变量 Condition
Condition condition = lock.newCondition();

8.原子量 AtomicLong

原子量即操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的。

9.障碍器 CyclicBarrier
CyclicBarrier cb = new CyclicBarrier(7, new MainTask());cb.await();

原创粉丝点击