日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

线程销毁_多线程(2)-Java高级知识(9)

發布時間:2025/3/12 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程销毁_多线程(2)-Java高级知识(9) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面有一篇文章寫的是多線程的基本知識,以及線程實現的兩種方式,一種是繼承Thread類,另一種實現Runnable 接口,今天沿著前面的多線程,繼續分享多線程的第三種創建方法,以及第三種創建方法的優勢,前兩種方法的弊端。并且介紹一種新的線程同步機制:lock鎖的機制。

1. 實現線程的第三種方式:

實現 Callable 接口,重寫 call 方法.

圖1. 實現Callable接口實現多線程

圖2. 調用以及啟動多線程

2. 繼承Thread類,實現Runnable 接口實現多線程的弊端:

(1) 沒有返回值

(2) 不支持泛型

(3) 異常必須處理

3. Callable 強大在哪里呢?

(1) Future 接 口 位 于 java.util.concurrent 包 中 ,可 以 對 具 體Runnable、Callable 任務的執行結果進行取消(cancel 方法,嘗試取消執行此任務)、查詢是否完成(isDone 方法)、獲取結果(get 方法,等待完成,然后檢索其結果)等。

(2) FutrueTask 是 Futrue 接口的唯一的實現類.

(3) FutureTask 同時實現了 Runnable, Future 接口。它既可以作為 Runnable 被線程執行,又可以作為 Future 得到Callable 的返回值.

圖3. Future接口

4. 線程同步的第三種方法:Lock鎖。

Lock 鎖:對需要上鎖的地方上鎖

1) JDK1.5 后新增的功能

2) 與 Synchronized 相比,Lock 可提供多種鎖方案,更靈活

3) Java.util.concurrent.locks 中的 Lock 是一個接口,它的實現類是一個 Java 類,而不是作為語言的特性(關鍵字)來實現。

注意:如果同步代碼有異常,要將 unLock()放到 finally 中。

4. 1 創建Lock鎖的步驟。

(1) 創建 Lock 對象

(2) 調用 lock()方法上鎖

(3) 調用 unlock()方法解鎖

4.2 Lock 與 synchronized 的區別。

(1) Lock 是 顯 示 鎖 (手 動 開 啟 和 關 閉 鎖 ,別 忘 關 閉鎖),synchronized 是隱式鎖

(2) Lock 只有代碼塊鎖,synchronized 有代碼塊鎖和方法鎖。

(3) 使用 Lock 鎖,JVM 將花費較少的時間來調度線程,性能更好,并且具有更好的擴展性(提供更多的子類)。

(4) Lock 確保當一個線程位于代碼的臨界區時,另一個線程不進入臨界區。如果其他線程試圖進入鎖定的代碼,則它將一直等待(即被阻止),直到該對象被釋放。lock()方法會對 Lock 實例對象進行加鎖,因此所有對該對象調用 lock()方法的線程都會被阻塞,直到該 Lock 對象的 unlock()方法被調用。

5. 線程池。

5.1 什么是線程池?

創建和銷毀對象是非常耗費時間的

創建對象:需要分配內存等資源

銷毀對象 :雖然不需要程序員操心,但是垃圾回收器會在后臺一直跟蹤并銷毀對于經常創建和銷毀、使用量特別大的資源,比如并發情況下的線程,對性能影響很大。

思路 :創建好多個線程,放入線程池中,使用時直接獲取引用,不使用時放回池中。可以避免頻繁創建銷毀、實現重復利用。

5.2 線程池的好處.

(1) 提高響應速度(減少了創建新線程的時間)

(2) 降低資源消耗(重復利用線程池中線程,不需要每次都創建)

(3) 提高線程的可管理性:避免線程無限制創建、從而銷毀系

統資源,降低系統穩定性,甚至內存溢出或者 CPU 耗盡

5.3 線程池的應用場合

(1) 需要大量線程,并且完成任務的時間短。

(2) 對性能要求苛刻。

(3) 接受突發性的大量請求。

6. 任務調度 度 Task_Timer和 ThreadLocal。

6.1 什么是調度?

任務:就是事情

調度:在不同的時間點或者在指定的時間點或者間隔多長時間我去運行這個任務。

類似于生活中的鬧鐘。

6.2 ThreadLocal.

ThreadLocal 直譯為“本地線程”,其實它就是一容器,用于存放線程的局部變量

作用:為解決多線程程序的并發問題。

圖4. ThreadLocal 的 的 API

謝謝大家,共同努力,共同進步。

總結

以上是生活随笔為你收集整理的线程销毁_多线程(2)-Java高级知识(9)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。