亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一篇文章帶你入門java多線程

 更新時間:2021年08月04日 15:41:56   作者:wwwzhouzy  
這篇文章主要介紹了java多線程編程實例,分享了幾則多線程的實例代碼,具有一定參考價值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下

一、描述

Java 給多線程編程提供了內置的支持。 一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發(fā)多個線程,每條線程并行執(zhí)行不同的任務。

多線程是多任務的一種特別的形式,但多線程使用了更小的資源開銷。

這里定義和線程相關的另一個術語 - 進程:一個進程包括由操作系統(tǒng)分配的內存空間,包含一個或多個線程。一個線程不能獨立的存在,它必須是進程的一部分。一個進程一直運行,直到所有的非守護線程都結束運行后才能結束。

多線程能滿足程序員編寫高效率的程序來達到充分利用 CPU 的目的。

二、一個線程的生命周期

1. 初始(NEW):新創(chuàng)建了一個線程對象,但還沒有調用start()方法。

2. 運行(RUNNABLE):Java線程中將就緒(ready)和運行中(running)兩種狀態(tài)籠統(tǒng)的稱為“運行”。
線程對象創(chuàng)建后,其他線程(比如main線程)調用了該對象的start()方法。該狀態(tài)的線程位于可運行線程池中,等待被線程調度選中,獲取CPU的使用權,此時處于就緒狀態(tài)(ready)。就緒狀態(tài)的線程在獲得CPU時間片后變?yōu)檫\行中狀態(tài)(running)。

3. 阻塞(BLOCKED):表示線程阻塞于鎖。

4. 等待(WAITING):進入該狀態(tài)的線程需要等待其他線程做出一些特定動作(通知或中斷)。

5. 超時等待(TIMED_WAITING):該狀態(tài)不同于WAITING,它可以在指定的時間后自行返回。

6. 終止(TERMINATED):表示該線程已經(jīng)執(zhí)行完畢。

三、線程的優(yōu)先級

每一個 Java 線程都有一個優(yōu)先級,這樣有助于操作系統(tǒng)確定線程的調度順序。

Java 線程的優(yōu)先級是一個整數(shù),其取值范圍是 1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。

默認情況下,每一個線程都會分配一個優(yōu)先級 NORM_PRIORITY(5)。

具有較高優(yōu)先級的線程對程序更重要,并且應該在低優(yōu)先級的線程之前分配處理器資源。但是,線程優(yōu)先級不能保證線程執(zhí)行的順序,而且非常依賴于平臺。

四、創(chuàng)建線程

Java 提供了三種創(chuàng)建線程的方法:

1、通過實現(xiàn) Runnable 接口;

2、通過繼承 Thread 類本身;

3、通過 Callable 和 Future 創(chuàng)建線程。

五、示例

1、Runnable接口

package com.zhouzy.base.t10;
public class RunnableTest implements Runnable{
	@Override
	public void run() {
		System.out.println("實現(xiàn)Runnable接口創(chuàng)建的線程,線程名:"+Thread.currentThread().getName());
	}
}

2、繼承Thread

package com.zhouzy.base.t10;
public class ThreadTest extends Thread{
	@Override
	public void run() {
		System.out.println("繼承Thread創(chuàng)建的線程,線程名:"+Thread.currentThread().getName());
	}
}

3、Callable 和 Future 創(chuàng)建線程

package com.zhouzy.base.t10;
import java.util.concurrent.Callable;
public class CallableTest implements Callable<String>{
	@Override
	public String call() throws Exception {
		System.out.println("實現(xiàn)Callable接口創(chuàng)建的線程,線程名:"+Thread.currentThread().getName());
		return "這是Callable接口返回的";
	}
}

4、測試

    @Test
	public void threadTest(){
		try {
			//Runnable接口測試
			RunnableTest runnable = new RunnableTest();
			Thread runThread = new Thread(runnable);
			runThread.setName("Runnable線程");
			runThread.start();
			//繼承Thread測試
			ThreadTest t = new ThreadTest();
			t.setName("Thread線程");
			t.start();
			CallableTest call = new CallableTest();
			FutureTask<String> ft = new FutureTask<>(call); 
			Thread ct = new Thread(ft);
			ct.setName("Callable線程");
			ct.start();
			System.out.println("callable線程返回值:"+ft.get());
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

測試結果:

實現(xiàn)Runnable接口創(chuàng)建的線程,線程名:Runnable線程
繼承Thread創(chuàng)建的線程,線程名:Thread線程
實現(xiàn)Callable接口創(chuàng)建的線程,線程名:Callable線程
callable線程返回值:這是Callable接口返回的

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

相關文章

  • Java中clone方法使用筆記

    Java中clone方法使用筆記

    clone顧名思義是復制,在Java語言中,clone方法被對象調用,所以會復制對象,下面這篇文章主要給大家介紹了關于Java中clone方法使用的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Java抽象類、繼承及多態(tài)和適配器的實現(xiàn)代碼

    Java抽象類、繼承及多態(tài)和適配器的實現(xiàn)代碼

    這篇文章主要介紹了Java抽象類、繼承及多態(tài)和適配器的實現(xiàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-06-06
  • java8 forEach結合Lambda表達式遍歷 List操作

    java8 forEach結合Lambda表達式遍歷 List操作

    這篇文章主要介紹了java8 forEach結合Lambda表達式遍歷 List操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • RxJava中map和flatMap的用法區(qū)別源碼解析

    RxJava中map和flatMap的用法區(qū)別源碼解析

    這篇文章主要為大家介紹了RxJava中map和flatMap的用法區(qū)別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Java中OAuth2.0第三方授權原理與實戰(zhàn)

    Java中OAuth2.0第三方授權原理與實戰(zhàn)

    本文主要介紹了Java中OAuth2.0第三方授權原理與實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Servlet虛擬路徑映射配置詳解

    Servlet虛擬路徑映射配置詳解

    這篇文章主要介紹了Servlet虛擬路徑映射配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • JVM中四種GC算法案例詳解

    JVM中四種GC算法案例詳解

    這篇文章主要介紹了JVM中四種GC算法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • Spring使用AspectJ的注解式實現(xiàn)AOP面向切面編程

    Spring使用AspectJ的注解式實現(xiàn)AOP面向切面編程

    這篇文章主要介紹了Spring使用AspectJ的注解式實現(xiàn)AOP面向切面編程的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • CentOS7和8中安裝Maven3.8.4的簡單步驟

    CentOS7和8中安裝Maven3.8.4的簡單步驟

    maven是屬于apache的一個工具,主要是對java進行編譯打包,解決依賴關系,下面這篇文章主要給大家介紹了關于CentOS7和8中安裝Maven3.8.4的相關資料,需要的朋友可以參考下
    2022-04-04
  • Javabean轉換成json字符并首字母大寫代碼實例

    Javabean轉換成json字符并首字母大寫代碼實例

    這篇文章主要介紹了javabean轉成json字符并首字母大寫代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論