多線程學習-線程認識與創建方式

来源:https://www.cnblogs.com/Hstar-/archive/2020/06/28/12764386.html
-Advertisement-
Play Games

線程認識與創建方式 1,並行與併發 並行:同一時刻同時執行方法 併發:一個時間段執行的方法 2,線程認識 啟動一個進程時,至少會同時啟動一個線程,是一個進程分不同模塊同時執行不同的工作, 一般情況下啟動Java程式,main方法是一個主線程啟動的同時會啟動垃圾回收的線程 3,開啟線程的方法 四種:繼 ...


線程認識與創建方式

1,並行與併發

  並行:同一時刻同時執行方法

  併發:一個時間段執行的方法

2,線程認識

  啟動一個進程時,至少會同時啟動一個線程,是一個進程分不同模塊同時執行不同的工作,

  一般情況下啟動Java程式,main方法是一個主線程啟動的同時會啟動垃圾回收的線程

3,開啟線程的方法

  四種:繼承thread類,實現Runnable介面,實現callable介面,線程池

  thread類:重寫run方法,創建類對象,start()開啟線程。

  Runnable介面:重寫run()方法,創建thread對象傳入實現了runnable介面的對象,也可同時傳入線程名稱(可選,有預設),start()開啟。

  callable介面(依賴futuretask類):FutureTask實現了RunnableFuture介面,RunnableFuture繼承Future(動態監控線程,get,isdone,cancel。。)Runnable介面

      重寫call()方法,創建FutureTask對象task傳入實現callable介面的對象,創建thread對象傳入task,也可同時傳入線程名,start()開啟。

      開啟後可調用get獲取返回值(此方法阻塞主線程)

  線程池:一個裝線程的容器       

      executors工具類,幫助創建線程池。

      executors.new.....線程類型(),返回線程池對象,

      線程池對象.execute方法傳入實現了runnable的對象

      

 

 

 

 註意:runnable和callable區別:1.runnable重寫run方法,callable重寫call方法。2.runnable沒有返回值,callable有返回值

    3.runnable不能拋出異常,callable可以。4.runnable不能動態監控,callable有工具類futuretask監控。如get獲取返回值,cancel取消執行

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 盒模型 盒模型主要兩種,標準盒模型和怪異和模型 標準盒模型:width指content部分的寬度 怪異盒模型:width指content、padding、border的總寬度 解決方法:box-sizing屬性,值為content-box(標準盒模型),值為border-box(怪異盒模型) 垂直居 ...
  • /** * 對象、數組變化監聽(增刪改) * @author w-bing * @date 2020-04-22 * @param {Object} obj * @param {Function} cb * @return {Proxy} */ function deepProxy(obj, cb) ...
  • Laravel 如何在blade文件中使用Vue組件 1. 安裝laravel/ui依賴包 composer require laravel/ui 2.生成vue基本腳手架 php artisan ui react 系統還提供了非常便捷的auth腳手架,帶登錄註冊。 php artisan ui r ...
  • 一、Overview Angular 入坑記錄的筆記第七篇,介紹 Angular 中的模塊的相關概念,瞭解相關的使用場景,以及知曉如何通過特性模塊來組織我們的 Angular 應用 對應官方文檔地址: NgModule 簡介 NgModules JavaScript 模塊 vs. NgModule ...
  • 一、sentinel是什麼 sentinel的官方名稱叫分散式系統的流量防衛兵。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。在Spring Cloud項目中最開始我們使用的是Hystrix,目前已停止更新了。現在Spring Cloud官方推薦的是 ...
  • 老孟導讀:【Flutter實戰】系列文章地址:http://laomengit.com/guide/introduction/mobile_system.html 預設情況下,Flutter 的滾動組件(比如 ListView)沒有顯示滾動條,使用 Scrollbar 顯示滾動條: Scrollba ...
  • 作者:鄭鄭好victorzheng juejin.im/post/5baa54e1f265da0ac2566fb2 文章綱要 此次分享的緣由 目前分散式事務問題是怎麼解決的 行業中有什麼解決方案 這些解決方案分別有什麼優缺點 別人是怎麼做的 我們可以怎麼來做 此次分享的緣由 支付重構 考慮支付重構的 ...
  • 12 自定義功能 In many cases, it is desirable to change the default wrapping of particular declarations in an interface. For example, you might want to prov ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...