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

帶你快速搞定java多線程

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

1、什么是線程

線程是操作系統(tǒng)調(diào)度的最小單元,也叫輕量級(jí)進(jìn)程。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。同一進(jìn)程可以創(chuàng)建多個(gè)線程,每個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間。并且能夠訪問(wèn)共享的內(nèi)存變量。

2、線程的狀態(tài)

線程的狀態(tài)一般看到的也就是Runable 和blocked ,最多的還是blocked,因?yàn)閏pu的時(shí)間片很短,切換的很快等待IO,等待臨界資源。大概知道就好

圖片

3、怎么通俗理解進(jìn)程,線程?

舉個(gè)例子,開(kāi)了一家餐廳,餐廳這個(gè)實(shí)體就是進(jìn)程,餐廳里的服務(wù)員就是線程,餐廳里的座位就是資源(游戲內(nèi)的數(shù)據(jù)),所有的服務(wù)員都可以安排客人就座,多個(gè)服務(wù)員安排座位就是多線程競(jìng)爭(zhēng),鎖也就是去排號(hào)。線程池就是有多個(gè)服務(wù)員一直站在那里等著被呼叫。

圖片

4、線程和進(jìn)程的區(qū)別

進(jìn)程它是具有獨(dú)立地址空間的,優(yōu)點(diǎn)就是隔離度好,穩(wěn)定,因?yàn)樗遣僮飨到y(tǒng)管理的,進(jìn)程和進(jìn)程之間是邏輯隔離的,只要操作系統(tǒng)不出問(wèn)題的話,一個(gè)進(jìn)程的錯(cuò)誤一般不會(huì)影響到其它進(jìn)程,缺點(diǎn)就是信息資源共享麻煩。而線程只是進(jìn)程啟動(dòng)的執(zhí)行單元,它是共享進(jìn)程資源的,創(chuàng)建銷毀、切換簡(jiǎn)單,速度很快,占用內(nèi)存少,CPU利用率高。但是需要程序員管控的東西也比較多,相互影響出問(wèn)題的機(jī)率較大,一個(gè)線程掛掉將導(dǎo)致整個(gè)進(jìn)程掛掉,所以從程序員的角度來(lái)講,我們只能看到某種代碼是線程安全的,而沒(méi)有說(shuō)進(jìn)程安全的。

5、什么是線程安全

在擁有共享數(shù)據(jù)的多條線程并行執(zhí)行的程序中,線程安全的代碼會(huì)通過(guò)同步機(jī)制保證各個(gè)線程都可以正常且正確的執(zhí)行,不會(huì)出現(xiàn)數(shù)據(jù)污染等意外情況。

圖片

類比:在餐廳里,每個(gè)服務(wù)員都有一份自己排號(hào),比如我剛剛安排了一個(gè)人去坐在8號(hào)座,那我想當(dāng)然的以為是下一個(gè)是9號(hào)座,如果另外一個(gè)服務(wù)員同時(shí)安排了9號(hào)桌,我再去安排就會(huì)造成數(shù)據(jù)不安全了,出現(xiàn)問(wèn)題了。

6、如何創(chuàng)建線程

java創(chuàng)建線程的三種方式:

  • 繼承Thread類創(chuàng)建線程類,無(wú)法繼承其他類。
  • 實(shí)現(xiàn)Runnable接口
  • 通過(guò)Callable和Future創(chuàng)建線程
package thread;
/**
 * @author 香菜
 */
public class ExtendThread extends Thread {
    @Override
    public void run() {
        System.out.println("ExtendThread");;
    }
}
package thread;
import java.util.concurrent.Callable;
/**
 * @author 香菜
 */
public class ImpCallable implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        System.out.println("Callable ");
        return 1;
    }
}
package thread;
/**
 * @author 香菜
 */
public class ImpRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Runnable");
    }
}
package thread;
import java.util.concurrent.FutureTask;
/**
 * @author 香菜
 */
public class Aain {
    public static void main(String[] args) {
        new ExtendThread().start();
        new Thread(new ImpRunnable()).start();
        new Thread(new FutureTask<>(new ImpCallable())).start();
    }
}

總結(jié):

線程的概念來(lái)自于生活,理解了概念,在項(xiàng)目中思考的時(shí)候只要搞清楚項(xiàng)目的線程模型,基本上不會(huì)遇到太大的問(wèn)題。

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

相關(guān)文章

  • Java基礎(chǔ)知識(shí)精通數(shù)組的使用

    Java基礎(chǔ)知識(shí)精通數(shù)組的使用

    數(shù)組對(duì)于每一門編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java?語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素
    2022-04-04
  • WeakHashMap?和?HashMap?區(qū)別及使用場(chǎng)景

    WeakHashMap?和?HashMap?區(qū)別及使用場(chǎng)景

    這篇文章主要為大家介紹了WeakHashMap?和?HashMap?的區(qū)別是什么以及何時(shí)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java如何手動(dòng)創(chuàng)建線程池

    Java如何手動(dòng)創(chuàng)建線程池

    這篇文章主要介紹了Java如何手動(dòng)創(chuàng)建線程池,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值

    使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值

    這篇文章主要介紹了使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 使用mybatis框架連接mysql數(shù)據(jù)庫(kù)的超詳細(xì)步驟

    使用mybatis框架連接mysql數(shù)據(jù)庫(kù)的超詳細(xì)步驟

    MyBatis是目前java項(xiàng)目連接數(shù)據(jù)庫(kù)的最流行的orm框架了,下面這篇文章主要給大家介紹了關(guān)于使用mybatis框架連接mysql數(shù)據(jù)庫(kù)的超詳細(xì)步驟,文中通過(guò)實(shí)例代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • MyBatis實(shí)現(xiàn)物理分頁(yè)的實(shí)例

    MyBatis實(shí)現(xiàn)物理分頁(yè)的實(shí)例

    這篇文章主要介紹了MyBatis實(shí)現(xiàn)物理分頁(yè)的實(shí)例,MyBatis使用RowBounds實(shí)現(xiàn)的分頁(yè)是邏輯分頁(yè),有興趣的可以了解一下。
    2017-01-01
  • Spring boot項(xiàng)目redisTemplate實(shí)現(xiàn)輕量級(jí)消息隊(duì)列的方法

    Spring boot項(xiàng)目redisTemplate實(shí)現(xiàn)輕量級(jí)消息隊(duì)列的方法

    這篇文章主要給大家介紹了關(guān)于Spring boot項(xiàng)目redisTemplate實(shí)現(xiàn)輕量級(jí)消息隊(duì)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Spring Boot實(shí)現(xiàn)郵件注冊(cè)功能示例代碼

    Spring Boot實(shí)現(xiàn)郵件注冊(cè)功能示例代碼

    本篇文章主要介紹了Spring Boot實(shí)現(xiàn)郵件注冊(cè)功能示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Springboot 讀取自定義pro文件注入static靜態(tài)變量方式

    Springboot 讀取自定義pro文件注入static靜態(tài)變量方式

    這篇文章主要介紹了Springboot 讀取自定義pro文件注入static靜態(tài)變量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實(shí)現(xiàn)去重的方法詳解

    Java實(shí)現(xiàn)去重的方法詳解

    austin支持兩種去重的類型:N分鐘相同內(nèi)容達(dá)到N次去重和一天內(nèi)N次相同渠道頻次去重,這篇文章就來(lái)和大家講講這兩種去重的具體實(shí)現(xiàn),需要的可以參考一下
    2023-06-06

最新評(píng)論

旌德县| 平南县| 霸州市| 新津县| 陆丰市| 黄山市| 贞丰县| 澳门| 淳安县| 长寿区| 广灵县| 仙桃市| 陆川县| 禹城市| 普陀区| 黄石市| 绥宁县| 武宁县| 视频| 德钦县| 威海市| 文水县| 宜川县| 西充县| 南丰县| 波密县| 中山市| 定南县| 军事| 大关县| 石屏县| 靖江市| 黔西县| 垫江县| 沙坪坝区| 晋城| 衡南县| 裕民县| 库车县| 惠安县| 招远市|