Java實現多線程的方式,啊四種

2020-12-09 掘客DIGGKR

小夥伴們都知道Java實現多線程有兩種方式:

1、繼承Thread類,重寫run()方法;

2、實現Runnable接口,實現run()方法

實際上還有兩種方式:

3、實現Callable接口,實現call()方法;

4、通過線程池創建線程

接下來一個一個說明:

1、繼承Thread類,重寫run()方法

線程類:

測試類:

運行結果:

2、實現Runnable接口,實現run()方法

線程類:

測試類:

運行結果:

3、實現Callable接口,實現call()方法

線程類:

測試類:

運行結果:

註:task.get()功能是獲取子線程的返回值,在得到返回值之前會一直阻塞主線程main。從運行結果可以看到,「我是主線程!」在最後才輸出,原因就是子線程阻塞的。

比較Callable和Runnable:

a、Callable需要實現的方法是call(),而Runnable是run()

b、Callable有返回值,而Runnable沒有返回值

c、call()方法可以拋出異常,而run()方法是不能拋出異常,只能try catch捕獲

4、通過線程池創建線程

線程類:

測試類:

以後面試官再問,就不要說兩種了,說四種!沒準面試官從茫茫人海中一眼就相中你了,O(∩_∩)O哈哈~~

歡迎朋友們關注轉發點讚,謝謝~~

相關焦點

  • 實現多線程的標準操作,基於Runnable接口實現java多線程
    1 為什麼要用Runnable上一篇文章介紹了通過繼承Thread類,實現java多線程。但如果當我們創建的這個線程類還想繼承其他類的時候,這種方法就略顯局限了。這也是java單繼承的局限性。為了避免這種局限性,所以又提供了第二種多線程主體定義的形式:實現Runnable接口。
  • java的線程創建方式
    Thread類java語言中的Thread類是一個基本的線程類,用於創建線程、中斷線程、獲取線程的基本信息、運行狀態等。我們首先了解下利用Thread類創建線程實例的二種方式。繼承Thread類創建線程//繼承Thread實現自己的線程類class MyThread extends Thread{//重寫run方法,給線程賦予工作任務 @Override public void run() { //任務內容…… System.out.println("當前線程是:"+Thread.currentThread
  • Java線程的兩種實現方式
    多線程的意義其實任何一個程序的執行都需要獲得cpu的執行權,是由cpu來去決定到底是由哪個程序來去執行,那麼多線程的存在其實就是「最大限度的利用cpu資源」,當某一個線程的處理不需要佔用cpu而之和I/O打交道的時候,讓需要佔用cpu資源的其他線程有機會獲得cpu資源。從根本上說,這就是說多線程編程的目的。
  • JAVA多線程 集合同步
    詞彙解析如何以線程安全的方式使用Java List?A.包裝器實現方式註:同步列表上的單個操作保證是原子操作,但如果要以一致的方式執行並發操作(multiple operations),則必須同步(synchronized)該操作。
  • 大數據基礎:Java多線程入門
    而Java當中的一個重要知識點,就是多線程。今天的大數據基礎分享,我們就主要來講講Java多線程入門基礎。 更好的編程模型 java為多線程編程提供了考究並且一致的編程模型,使開發人員能夠更加專注於問題解決,即為所遇到的問題建立適合的模型,而不是絞盡腦汁地考慮如何將其多線程化。一旦開發人員建立好了模型,稍作修改總是能夠方便地映射到Java提供的多線程編程模型上。
  • Java多線程synchronized
    本篇主要介紹Java多線程中的同步,也就是如何在Java語言中寫出線程安全的程序,如何在Java語言中解決非線程安全的相關問題。
  • Java之創建多線程的第一種方式,thread類
    在java.long包下,有這樣一個類java.long.Thread類代表線程,所有的線程對象必須是Thread類或其子類的實例。每一個線程的作用是完成一定的任務,就是執行一段程序流即一段順序執行的代碼。Java中使用線程執行體來代表這段程序流。
  • 通俗易懂的告訴你「策略模式」在java多線程中的應用
    花10分鐘認真的閱讀一篇文章有時或許比敲60分鐘代碼還有效我們都知道java啟動多線程有兩種方式,一種是繼承Thread類,一種是實現Runnable接口,但是很多小夥伴可能不知道實現Runnable接口這種方式中運用了
  • Java 實現線程的方式有幾種方式?帶有返回值的線程怎麼實現?
    Java 實現線程的方式有幾種方式?帶有返回值的線程怎麼實現?在Java線程開發中,有幾種方法開啟線程?假如需要得到線程返回的信息怎麼辦?可以實現嗎?凱哥將通過源碼和大家一起分享下線程怎麼將返回值帶回來的。
  • Java面試題-多線程篇十三
    線程是作業系統能夠進行運算調度的最小單位,它被包含在進程之中,是進程中的實際運作單位。程式設計師可以通過它進行多處理器編程,你可以使用多線程對運算密集型任務提速。比如,如果一個線程完成一個任務要100毫秒,那麼用十個線程完成改任務只需10毫秒。122,線程和進程有什麼區別?
  • 新手編程:Java多線程中Thread與Runnable的區別
    Java多線程中Thread與Runnable的區別定義extends Thread子類繼承Thread具備多線程能力,可以實現多線程;啟動線程的方法:①創建子類對象 ②對象名.start();不建議使用:避免多線程OOP單繼承的局限性(OOP:Object Oriented Programming,面向對象的編程、類似的還有OOD
  • Java多線程帶返回值得Callable接口
    Java多線程帶返回值的Callable接口在面試的時候,有時候是不是會遇到面試會問你,Java中實現多線程的方式有幾種?你知道嗎?你知道Java中有可以返回值的線程嗎?在具體的用法你知道嗎?如果兩個線程同時來調用同一個計算對象,計算對象的call方法會被調用幾次你知道嗎?
  • Java編寫線程安全類的7個技巧
    幾乎每個Java應用程式都會用到線程。例如,Tomcat是在單獨的工作線程中處理每個請求,胖客戶機(Fat Client)在專用工作線程中處理長時間運行的請求。本文將跟你一起探討如何以線程安全的方式來編寫類。
  • 黑馬程式設計師:多線程的生命周期以及執行順序等習題練習
    習題總結:本文的習題主要是圍繞線程是如何創建的,線程的生命周期和執行順序,控制線程的啟動和掛起,以及如何正常結束線程的知識點。通過額額習題的掌握,應該能夠對多線程技術有較為深入的了解,並對多線程的創建、調度、同步以及通信操作能做到熟練掌握。需要獲取答案的小夥伴請轉發加評論。
  • 高級分享:Java多線程你真的理解透徹了嗎?帶你玩轉一次多線程!
    不知道怎麼引入正文相信後端同學在開發的時候多多少少都會涉及到多線程開發,作為Java開發的我也同樣會經常用到多線程開發。我認為Java語言在處理多線程上是非常優秀的,我們可以使用簡明的代碼實現線程的創建、啟動、管理等。
  • Java基礎知識點面試手冊(線程+JDK8)
    高並發編程多線程和單線程的區別和聯繫:答:在單核 CPU 中,將 CPU 分為很小的時間片,在每一時刻只能有一個線程在執行,是一種微觀上輪流佔用 CPU 的機制。多線程會存在線程上下文切換,會導致程序執行速度變慢,即採用一個擁有兩個線程的進程執行所需要的時間比一個線程的進程執行兩次所需要的時間要多一些。
  • 面試前必看Java線程面試題
    如果將對象的方法視為對象向外界提供的服務,那麼運行時的多態性可以解釋為:當A系統訪問B系統提供的服務時,B系統有多種提供服務的方式,但一切對A系統來說都是透明的(就像電動剃鬚刀是A系統,它的供電系統是B系統,B系統可以使用電池供電或者用交流電,甚至還有可能是太陽能,A系統只會通過B類對象調用供電的方法,但並不知道供電系統的底層實現是什麼,究竟通過何種方式獲得了動力)。
  • java多線程之Thread構造函數(源碼分析)
    在上一篇文章中對線程狀態生命周期和常見的線程api進行了一個講解。這篇文章開始著重對其構造方法進行一個說明,也將揭曉為什麼我們調用了start方法就能啟動一個線程。一、守護線程和非守護線程我們獲取線程的id的時候會發現每次都不是0,這是因為在java虛擬機運行一個線程的時候會默認啟動一些其他的線程,來為我們的線程服務。
  • 【堪稱經典】JAVA多線程和並發基礎面試問答
    在多線程程序中,多個線程被並發的執行以提高程序的效率,CPU不會因為某個線程需要等待資源而進入空閒狀態。多個線程共享堆內存(heap memory),因此創建多個線程去執行一些任務會比創建多個進程更好。舉個例子,Servlets比CGI更好,是因為Servlets支持多線程而CGI不支持。3. 用戶線程和守護線程有什麼區別?
  • 40個Java多線程問題總結
    單核CPU上所謂的」多線程」那是假的多線程,同一時間處理器只會處理一段邏輯,只不過線程之間切換得比較快,看著像多個線程」同時」運行罷了。多核CPU上的多線程才是真正的多線程,它能讓你的多段邏輯同時工作,多線程,可以真正發揮出多核CPU的優勢來,達到充分利用CPU的目的。