Java線程-新特性

這裏總結一下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();

發佈了38 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章