摘要:創(chuàng)建并使用線程兩種方式,創(chuàng)建新的線程實(shí)現(xiàn)接口,接口定義了一個(gè)方法。注意,兩個(gè)例子均調(diào)用了去創(chuàng)建一個(gè)新的線程這兩種方式,該選哪一種實(shí)現(xiàn)接口,是常用的創(chuàng)建新線程的方式。缺點(diǎn)是,無法繼承其它類建議使用第一種。
創(chuàng)建并使用線程
兩種方式,創(chuàng)建新的線程:
實(shí)現(xiàn) Runnable 接口,Runnable 接口定義了一個(gè)方法:run。run 方法中的代碼,將在創(chuàng)建的線程中執(zhí)行。實(shí)現(xiàn)了 Runnable 接口的對象,作為 Thread 構(gòu)造方法的參數(shù)。
public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new Thread(new HelloRunnable())).start(); } }
繼承 Thread。Thread 類實(shí)現(xiàn)了 Runnable 接口,盡管它的 run 方法內(nèi)什么也沒有。一個(gè)類可以繼承自 Thread,并重寫 run 方法。
public class HelloThread extends Thread { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new HelloThread()).start(); } }
注意,兩個(gè)例子均調(diào)用了 Thread.start 去創(chuàng)建一個(gè)新的線程
這兩種方式,該選哪一種?實(shí)現(xiàn) Runnable 接口,是常用的創(chuàng)建新線程的方式。
實(shí)現(xiàn) Runnable 接口的類,可以繼承自其它的類,而不僅僅是 Thread。更加靈活。
適用于一些高階線程管理的 APIs
繼承 Thread,用起來似乎更加簡單一點(diǎn)。缺點(diǎn)是,無法繼承其它類 (java)
建議使用第一種。
參考資料Defining and Starting a Thread
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65197.html
摘要:多線程和并發(fā)問題是技術(shù)面試中面試官比較喜歡問的問題之一。線程可以被稱為輕量級進(jìn)程。一個(gè)守護(hù)線程是在后臺執(zhí)行并且不會(huì)阻止終止的線程。其他的線程狀態(tài)還有,和。上下文切換是多任務(wù)操作系統(tǒng)和多線程環(huán)境的基本特征。 多線程和并發(fā)問題是 Java 技術(shù)面試中面試官比較喜歡問的問題之一。在這里,從面試的角度列出了大部分重要的問題,但是你仍然應(yīng)該牢固的掌握J(rèn)ava多線程基礎(chǔ)知識來對應(yīng)日后碰到的問題。(...
摘要:線程可以被稱為輕量級進(jìn)程。一個(gè)守護(hù)線程是在后臺執(zhí)行并且不會(huì)阻止終止的線程。其他的線程狀態(tài)還有,和。上下文切換是多任務(wù)操作系統(tǒng)和多線程環(huán)境的基本特征。在的線程中并沒有可供任何對象使用的鎖和同步器。 原文:Java Multi-Threading and Concurrency Interview Questions with Answers 翻譯:并發(fā)編程網(wǎng) - 鄭旭東 校對:方騰飛 多...
摘要:當(dāng)一個(gè)程序運(yùn)行時(shí),內(nèi)部可能包含了多個(gè)順序執(zhí)行流,每個(gè)順序執(zhí)行流就是一個(gè)線程所有運(yùn)行中的任務(wù)通常對應(yīng)一個(gè)進(jìn)程。線程也被稱作輕量級進(jìn)程,線程是進(jìn)程的執(zhí)行單元。在線程的生命周期中,它要經(jīng)過新 線程概述 線程和進(jìn)程 幾乎所有的操作系統(tǒng)都支持同時(shí)運(yùn)行多個(gè)任務(wù),一個(gè)任務(wù)通常就是一個(gè)程序,每個(gè)運(yùn)行中的程序就是一個(gè)進(jìn)程。當(dāng)一個(gè)程序運(yùn)行時(shí),內(nèi)部可能包含了多個(gè)順序執(zhí)行流,每個(gè)順序執(zhí)行流就是一個(gè)線程 所有運(yùn)...
摘要:一個(gè)進(jìn)程可以擁有多個(gè)線程,一個(gè)線程必須有一個(gè)父進(jìn)程。線程是獨(dú)立運(yùn)行的,它并不知道進(jìn)程中是否還有其他的線程存在。線程的調(diào)度和管理由進(jìn)程本身負(fù)責(zé)完成。因此多線程實(shí)現(xiàn)多任務(wù)并發(fā)比多線程的效率高。 ??一個(gè)任務(wù)通常就是一個(gè)程序,每個(gè)運(yùn)行中的程序就是一個(gè)進(jìn)程。當(dāng)一個(gè)程序運(yùn)行時(shí),內(nèi)部可能包含了多個(gè)順序執(zhí)行流,每個(gè)順序執(zhí)行流就是一個(gè)線程。 進(jìn)程 定義: ??當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程。...
摘要:線程池為了節(jié)省系統(tǒng)在多線程并發(fā)時(shí)不斷創(chuàng)建和銷毀線程帶來的額外開銷,就需要引入線程池。其中表示一個(gè)線程池。表示一個(gè)線程工廠,通過可以取得一個(gè)特定功能的線程池。創(chuàng)建固定數(shù)目線程的線程池。默認(rèn)情況下,在創(chuàng)建了線程池后,線程池中的線程數(shù)為。 【線程池 為了節(jié)省系統(tǒng)在多線程并發(fā)時(shí)不斷創(chuàng)建和銷毀線程帶來的額外開銷,就需要引入線程池。線程池的基本功能就是進(jìn)行線程的復(fù)用。當(dāng)系統(tǒng)接受一個(gè)提交的任務(wù)時(shí),并...
摘要:線程線程是進(jìn)程中的一個(gè)實(shí)體,作為系統(tǒng)調(diào)度和分派的基本單位。下的線程看作輕量級進(jìn)程。因此,使用的目的是讓相同優(yōu)先級的線程之間能適當(dāng)?shù)妮嗈D(zhuǎn)執(zhí)行。需要注意的是,是線程自己從內(nèi)部拋出的,并不是方法拋出的。 本文及后續(xù)相關(guān)文章梳理一下關(guān)于多線程和同步鎖的知識,平時(shí)只是應(yīng)用層面的了解,由于最近面試總是問一些原理性的知識,雖說比較反感這種理論派,但是為了生計(jì)也必須掌握一番。(PS:并不是說掌握原理不...
閱讀 3526·2023-04-25 17:35
閱讀 2599·2021-11-24 09:39
閱讀 2538·2021-10-18 13:32
閱讀 3424·2021-10-11 10:58
閱讀 1643·2021-09-26 09:55
閱讀 6177·2021-09-22 15:47
閱讀 972·2021-08-26 14:15
閱讀 3477·2019-08-30 15:55