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

帶你快速搞定java多線程

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

1、什么是線程

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

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

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

圖片

3、怎么通俗理解進程,線程?

舉個例子,開了一家餐廳,餐廳這個實體就是進程,餐廳里的服務員就是線程,餐廳里的座位就是資源(游戲內的數據),所有的服務員都可以安排客人就座,多個服務員安排座位就是多線程競爭,鎖也就是去排號。線程池就是有多個服務員一直站在那里等著被呼叫。

圖片

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

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

5、什么是線程安全

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

圖片

類比:在餐廳里,每個服務員都有一份自己排號,比如我剛剛安排了一個人去坐在8號座,那我想當然的以為是下一個是9號座,如果另外一個服務員同時安排了9號桌,我再去安排就會造成數據不安全了,出現問題了。

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

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

  • 繼承Thread類創(chuàng)建線程類,無法繼承其他類。
  • 實現Runnable接口
  • 通過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();
    }
}

總結:

線程的概念來自于生活,理解了概念,在項目中思考的時候只要搞清楚項目的線程模型,基本上不會遇到太大的問題。

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

相關文章

  • Java基礎知識精通數組的使用

    Java基礎知識精通數組的使用

    數組對于每一門編程語言來說都是重要的數據結構之一,當然不同語言對數組的實現及處理也不盡相同。Java?語言中提供的數組是用來存儲固定大小的同類型元素
    2022-04-04
  • WeakHashMap?和?HashMap?區(qū)別及使用場景

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

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

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

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

    使用@PathVariable注解如何實現動態(tài)傳值

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

    使用mybatis框架連接mysql數據庫的超詳細步驟

    MyBatis是目前java項目連接數據庫的最流行的orm框架了,下面這篇文章主要給大家介紹了關于使用mybatis框架連接mysql數據庫的超詳細步驟,文中通過實例代碼和圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • MyBatis實現物理分頁的實例

    MyBatis實現物理分頁的實例

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

    Spring boot項目redisTemplate實現輕量級消息隊列的方法

    這篇文章主要給大家介紹了關于Spring boot項目redisTemplate實現輕量級消息隊列的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • Spring Boot實現郵件注冊功能示例代碼

    Spring Boot實現郵件注冊功能示例代碼

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

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

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

    Java實現去重的方法詳解

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

最新評論

维西| 淄博市| 梅河口市| 潞城市| 依安县| 乌兰浩特市| 崇仁县| 临沂市| 蕉岭县| 安达市| 南充市| 土默特左旗| 綦江县| 象州县| 巨野县| 广平县| 咸阳市| 丹阳市| 定安县| 闸北区| 洛浦县| 辽阳县| 台中县| 天气| 上杭县| 静乐县| 南安市| 德州市| 乌兰浩特市| 孝感市| 钟祥市| 扎囊县| 漠河县| 珠海市| 永安市| 和林格尔县| 烟台市| 柘荣县| 临泉县| 武川县| 获嘉县|