java NIO和Concurrent包的一些知識點

hgs19921112發表於2018-08-19
1. NIO
ByteBuffer快取
ByteBuffer.allocate();
      put() 寫資料
      get() 讀資料
      limit()  得到limit
      position() 得到position
      capicity() 得到capicity
      remaining() limit-position
      hasRemaining()   limit-position>0?true:false
      rewind()將position置為0
      reset()將position重置為 mark()上次的位置
      mark()
      clear()清空緩衝區,並不是真正的緩衝區,修改buffer的相應的引數
Channel通道
2.java.util.concurrent
1.BlockingQuene (ArrayListBlockingQueue,LinkedBlockingQueue)阻塞佇列 存放執行緒處理的資料
2.ConcurrentMap 
    鎖的範圍更加小不是整個map 而是部分
    引入了讀寫鎖的機制
3.CountDownLatch 閉鎖  。是concurrent提供的包,可以協調執行緒執行的過程,
  實現協調某個執行緒阻塞知道其他若干執行緒達到一定條件才放開阻塞執行的效果
  使用  等待時間呼叫  CountDownLatch.await(), 其他先要完成的執行緒呼叫 CountDownLatch.countDown()
4.CyclicBarrier 柵欄
  可以實現多個併發的執行緒在執行過程中,在某一個節點進行阻塞等待,直到所有的執行緒
  都到達指定的位置後,才一起發開阻塞繼續執行
  建構函式初始化要等待執行緒的個數,然後呼叫CyclicBarrier.await() 
5.Exchanger 交換機
  可以實現連個執行緒交換物件,先到的執行緒會出現阻塞,直到兩個執行緒到達交換機後,
  互相交換物件,各自繼續執行
6.Semaphore 訊號量
  建構函式Semaphore(int)  Semaphore(int,boolean) 不公平策略
  主要函式 acquire(); 後的訊號量,無則阻塞,release()釋放訊號訊號量
7.ExecuteService 執行緒池
  Executors.newFixedThreadPool()
  Executors.newCachedThreadpool()
  Executors.newSingletonThreadPool()
  Executors.newScheduledThreadPool()
  
  
執行緒池
	1.ExecutorService 
		提交執行緒的方法
			execute() 提交執行緒 沒有返回值
			submit(Runnable) 提交執行緒,返回Future 可以透過Future.get()得到該執行緒的狀態,
			但是如果該執行緒未執行完成,那麼該方法阻塞
			submit(Callable) 同上面類似,但是執行緒可以帶有返回值
			invokeAny(.....),隨機選擇執行緒執行一個
			invokeAll(),自動執行所有的執行緒
		關閉執行緒池:ExecutorService.shutdown();該方法不再接受執行緒池,等待所有執行緒
			執行完畢後,執行緒池結束。
			ExecutorService.shutdown();立即關閉,退出任務,正在執行的執行緒可能會出錯。
	2.ReadWriteLock 讀寫鎖
	   讀鎖可以共享,寫鎖互斥
	   讀鎖 readLock().lock();
	   寫鎖 writeLock().lock();


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31506529/viewspace-2200356/,如需轉載,請註明出處,否則將追究法律責任。

相關文章