最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、描述

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

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

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

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

二、一個(gè)線程的生命周期

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

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

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

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

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

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

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

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

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

默認(rèn)情況下,每一個(gè)線程都會(huì)分配一個(gè)優(yōu)先級(jí) NORM_PRIORITY(5)。

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

四、創(chuàng)建線程

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

1、通過實(shí)現(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("實(shí)現(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("實(shí)現(xiàn)Callable接口創(chuàng)建的線程,線程名:"+Thread.currentThread().getName());
		return "這是Callable接口返回的";
	}
}

4、測(cè)試

    @Test
	public void threadTest(){
		try {
			//Runnable接口測(cè)試
			RunnableTest runnable = new RunnableTest();
			Thread runThread = new Thread(runnable);
			runThread.setName("Runnable線程");
			runThread.start();
			//繼承Thread測(cè)試
			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();
		}
	}

測(cè)試結(jié)果:

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

總結(jié)

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

相關(guān)文章

  • Java實(shí)現(xiàn)url加密處理的方法示例

    Java實(shí)現(xiàn)url加密處理的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)url加密處理的方法,涉及java基于base64、編碼轉(zhuǎn)換實(shí)現(xiàn)加密解密相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Java之Spring Bean 作用域和生命周期

    Java之Spring Bean 作用域和生命周期

    這篇文章主要介紹了Java Bean的作用域和生命周期,Bean 的作用域是指 Bean 在 Spring 整個(gè)框架中的某種行為模式,所謂的?命周期指的是?個(gè)對(duì)象從誕?到銷毀的整個(gè)?命過程,我們把這個(gè)過程就叫做?個(gè)對(duì)象的?命周期,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • IntelliJ IDEA查看方法說明文檔的圖解

    IntelliJ IDEA查看方法說明文檔的圖解

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA查看方法說明文檔的圖解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java語言Lang包下常用的工具類介紹

    Java語言Lang包下常用的工具類介紹

    這篇文章主要介紹了Java語言Lang包下常用的工具類介紹,次奧變覺得挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下。
    2017-10-10
  • 淺談一下RabbitMQ、Kafka和RocketMQ消息中間件對(duì)比

    淺談一下RabbitMQ、Kafka和RocketMQ消息中間件對(duì)比

    這篇文章主要介紹了淺談一下RabbitMQ、Kafka和RocketMQ消息中間件對(duì)比,消息中間件屬于分布式系統(tǒng)中一個(gè)字系統(tǒng),關(guān)注于數(shù)據(jù)的發(fā)送和接收,利用高效可靠的異步信息傳遞機(jī)制對(duì)分布式系統(tǒng)中的其余各個(gè)子系統(tǒng)進(jìn)行集成,需要的朋友可以參考下
    2023-05-05
  • Spring Boot攔截器Interceptor與過濾器Filter詳細(xì)教程(示例詳解)

    Spring Boot攔截器Interceptor與過濾器Filter詳細(xì)教程(示例詳解)

    本文詳細(xì)介紹了SpringBoot中的攔截器(Interceptor)和過濾器(Filter),包括它們的定義、作用范圍、使用場(chǎng)景、實(shí)現(xiàn)步驟、執(zhí)行順序、常見問題及解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • Java enum的用法詳細(xì)介紹及實(shí)例代碼

    Java enum的用法詳細(xì)介紹及實(shí)例代碼

    這篇文章主要介紹了Java enum的用法詳細(xì)介紹及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Spring Boot中的WebSocketMessageBrokerConfigurer接口使用

    Spring Boot中的WebSocketMessageBrokerConfigurer接口使用

    在SpringBoot中,我們可以使用 WebSocketMessageBrokerConfigurer接口來配置WebSocket消息代理,以實(shí)現(xiàn)實(shí)時(shí)通信,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié)

    最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié)

    這篇文章主要介紹了最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • 使用IDEA如何把Java程序打包成jar

    使用IDEA如何把Java程序打包成jar

    這篇文章主要介紹了使用IDEA把Java程序打包成jar,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

晋城| 上杭县| 南川市| 田东县| 新和县| 类乌齐县| 沅江市| 台东市| 辛集市| 喀喇| 宽城| 西华县| 凌海市| 景泰县| 吕梁市| 义马市| 大石桥市| 托克逊县| 杭州市| 虹口区| 织金县| 通辽市| 循化| 定边县| 中西区| 娱乐| 景谷| 梁河县| 平泉县| 迁西县| 凤城市| 盱眙县| 安徽省| 安新县| 汕尾市| 九江县| 紫云| 淮阳县| 卓资县| 灌阳县| 大同县|