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

Javaee多線程之進(jìn)程和線程之間的區(qū)別和聯(lián)系(最新整理)

 更新時(shí)間:2025年07月08日 16:50:12   作者:英雄不問出處~  
進(jìn)程是資源分配單位,線程是調(diào)度執(zhí)行單位,共享資源更高效,創(chuàng)建線程五種方式:繼承Thread、Runnable接口、匿名類、lambda,run為方法,start啟動(dòng)線程,實(shí)現(xiàn)并發(fā)執(zhí)行,本文給大家介紹Javaee多線程之進(jìn)程和線程之間的區(qū)別和聯(lián)系,感興趣的朋友跟隨小編一起看看吧

進(jìn)程和線程

進(jìn)程

  1. 進(jìn)程:是正在執(zhí)行的程序,是資源分配的基本單位,具有獨(dú)立的地址空間
  2. 操作系統(tǒng)會(huì)為其分配CPU和內(nèi)存

線程

  1. 線程:引入線程是為了解決進(jìn)程開銷大,浪費(fèi)資源的情景,并且多進(jìn)程并發(fā)效率比較低
  2. 線程是調(diào)度執(zhí)行的基本單位
  3. 線程之間會(huì)相互影響,一個(gè)線程掛了,會(huì)影響到整個(gè)進(jìn)程都異常結(jié)束,線程也自然會(huì)結(jié)束

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

  1. 進(jìn)程包含線程,一個(gè)進(jìn)程里面有多個(gè)線程或者是一個(gè)線程
  2. 進(jìn)程和線程都是用來實(shí)現(xiàn)并發(fā)編程場(chǎng)景的,但是線程比進(jìn)程更輕量和高效
  3. 同一個(gè)進(jìn)程的線程之間共用同一份資源(內(nèi)存和硬盤),省去了申請(qǐng)資源的開銷
  4. 進(jìn)程和進(jìn)程之間都是獨(dú)立存在的,不會(huì)相互影響,同一個(gè)進(jìn)程中,線程和線程之間會(huì)相互影響(線程安全問題 + 線程出現(xiàn)異常)
  5. 進(jìn)程是分配資源的基本單位,線程是調(diào)度執(zhí)行的基本單位

創(chuàng)建線程的五種寫法

繼承Thread,重寫run

package Thread;
class MyThread extends Thread{
    public void run(){
        // 這個(gè)是線程的入口方法
        while(true) {
            System.out.println("hello Thread!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
// 創(chuàng)建線程
public class Demo1 {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new MyThread();
        // 使用start方法可以間接調(diào)用run方法
        // start和 run都時(shí)Thread的成員
        // run 只是線程的入口(描述了線程要做什么事情)
        // start才是真正調(diào)用了系統(tǒng)的API,在系統(tǒng)中創(chuàng)建出了線程,讓線程調(diào)用 run
        thread.start();
        // 從這句開始程序就并發(fā)執(zhí)行,一邊執(zhí)行hello main,一邊執(zhí)行hello Thread
        // 兵分兩路進(jìn)行執(zhí)行
        // 并發(fā) == 并行 + 并發(fā)
        while(true){
            System.out.println("hello main!");
            Thread.sleep(1000);
        }
        // 先執(zhí)行main,再執(zhí)行的是Thread,先執(zhí)行主線程
    }
}

實(shí)現(xiàn)Runnable(接口),重寫run

package Thread;
class MyRunable implements Runnable{
    public void run(){
        while(true){
            System.out.println("hello thread!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
public class Demo2 {
    public static void main(String[] args) throws InterruptedException {
        // 這個(gè)接口就是用來實(shí)現(xiàn)多態(tài)的
        Runnable myRunable = new MyRunable();
        Thread thread = new Thread(myRunable);
        thread.start();
        while(true){
            System.out.println("hello main!");
            Thread.sleep(1000);
        }
    }
}

繼承Thread,重寫run,但是使用匿名內(nèi)部類

  1. 使用匿名內(nèi)部類的方式創(chuàng)建出線程
package Thread;
public class Demo3 {
    public static void main(String[] args) {
        Thread thread = new Thread(){
            public void run(){
                while(true){
                    System.out.println("hello Thread!");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        };
        thread.start();
        while(true){
            System.out.println("hello main!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

實(shí)現(xiàn)Runnable(接口),重寫run,但是使用匿名內(nèi)部類

package Thread;
public class Demo4 {
    public static void main(String[] args) {
        // 法一:創(chuàng)建實(shí)例
       Runnable runnable = new Runnable(){
            public void run(){
                System.out.println("hello Thread!");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        };
        // 法二:創(chuàng)建匿名對(duì)象
       Thread thread = new Thread(new Runnable(){
            public void run(){
                System.out.println("hello Thread!");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        });
        // Thread thread = new Thread(runnable);
        thread.start();
        while(true){
            System.out.println("hello main!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

使用lambda表達(dá)式

  1. lambda表達(dá)式相當(dāng)于是匿名內(nèi)部類的替換寫法
package Thread;
public class Demo5 {
    public static void main(String[] args) {
        Thread thread = new Thread(()->{
           while(true){
               System.out.println("hello Thread!");
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   throw new RuntimeException(e);
               }
           }
        });
        thread.start();
        while(true){
            System.out.println("hello main!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

請(qǐng)說明Thread類中run和start的區(qū)別

從方法的區(qū)別,及運(yùn)行結(jié)果的區(qū)別分別說明
1. start方法可以用來啟動(dòng)一個(gè)新的線程,run方法只是一個(gè)普通的方法,在主線程中執(zhí)行
2.start方法只能調(diào)用一次,run方法可以調(diào)用多次
3.調(diào)用start方法會(huì)執(zhí)行新的線程,新線程和主線程并發(fā)執(zhí)行,run方法只是線程的入口,start方法調(diào)用了系統(tǒng)API,start方法創(chuàng)建出了線程,讓線程再調(diào)用run方法
4.run方法和主線程同步執(zhí)行,start方法啟動(dòng)的線程和主線程異步執(zhí)行
5.run方法按順序執(zhí)行,start方法調(diào)用的線程中的代碼執(zhí)行順序由線程調(diào)度器決定,順序不確定

到此這篇關(guān)于Javaee多線程之進(jìn)程和線程之間的區(qū)別和聯(lián)系(最新整理)的文章就介紹到這了,更多相關(guān)java進(jìn)程和線程區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis基礎(chǔ)概念與高級(jí)應(yīng)用小結(jié)

    Mybatis基礎(chǔ)概念與高級(jí)應(yīng)用小結(jié)

    這篇文章主要介紹了Mybatis基礎(chǔ)回顧與高級(jí)應(yīng)用,本文內(nèi)容有點(diǎn)小長(zhǎng),希望大家耐心閱讀,此文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Java舉例講解分治算法思想

    Java舉例講解分治算法思想

    分治算法的基本思想是將一個(gè)規(guī)模為N的問題分解為K個(gè)規(guī)模較小的子問題,這些子問題相互獨(dú)立且與原問題性質(zhì)相同。求出子問題的解,就可得到原問題的解,本篇文章我們就用分治算法來實(shí)現(xiàn)歸并排序快速排序以及二分搜索算法
    2022-04-04
  • SpringBoot整合Flyway實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始化和版本管理操作

    SpringBoot整合Flyway實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始化和版本管理操作

    Flyway?是一款開源的數(shù)據(jù)庫(kù)版本管理工具,它可以很方便的在命令行中使用,或者在Java應(yīng)用程序中引入,用于管理我們的數(shù)據(jù)庫(kù)版本,這篇文章主要介紹了SpringBoot整合Flyway實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始化和版本管理,需要的朋友可以參考下
    2023-06-06
  • java 獲取HttpRequest Header的幾種方法(必看篇)

    java 獲取HttpRequest Header的幾種方法(必看篇)

    下面小編就為大家?guī)硪黄猨ava 獲取HttpRequest Header的幾種方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • 關(guān)于通過java調(diào)用datax,返回任務(wù)執(zhí)行的方法

    關(guān)于通過java調(diào)用datax,返回任務(wù)執(zhí)行的方法

    今天小編就為大家分享一篇關(guān)于通過java調(diào)用datax,返回任務(wù)執(zhí)行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Mybatis源碼解析之事務(wù)管理

    Mybatis源碼解析之事務(wù)管理

    大家好,本篇文章主要講的是Mybatis源碼解析之事務(wù)管理,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java關(guān)鍵字之native詳解

    Java關(guān)鍵字之native詳解

    這篇文章主要為大家介紹了Java關(guān)鍵字之native,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • JSON Web Token(JWT)原理入門教程詳解

    JSON Web Token(JWT)原理入門教程詳解

    這篇文章主要為大家介紹了JSON Web Token(JWT)原理入門教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • 解決@Scope(“prototype“)不生效的問題

    解決@Scope(“prototype“)不生效的問題

    這篇文章主要介紹了解決@Scope(“prototype“)不生效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java使用Lambda表達(dá)式實(shí)現(xiàn)排序功能的實(shí)現(xiàn)代碼

    Java使用Lambda表達(dá)式實(shí)現(xiàn)排序功能的實(shí)現(xiàn)代碼

    在 Java 中使用 Lambda 表達(dá)式進(jìn)行排序是一種簡(jiǎn)潔且功能強(qiáng)大的方式,特別是在對(duì)集合中的對(duì)象進(jìn)行自定義排序時(shí),Lambda 表達(dá)式可以與 Collections.sort() 或 List.sort() 方法結(jié)合使用,本文給大家介紹了Java使用Lambda表達(dá)式實(shí)現(xiàn)排序功能的方法,需要的朋友可以參考下
    2025-07-07

最新評(píng)論

荆门市| 东方市| 乌鲁木齐县| 泸定县| 昔阳县| 远安县| 五指山市| 永胜县| 平阴县| 安岳县| 奈曼旗| 安西县| 栾川县| 清苑县| 滨州市| 丰镇市| 沿河| 巫山县| 武穴市| 永寿县| 交城县| 延津县| 桓仁| 砚山县| 新绛县| 潼南县| 富平县| 博湖县| 馆陶县| 林甸县| 新和县| 潮州市| 易门县| 古浪县| 沂水县| 安康市| 大宁县| 乐东| 白朗县| 资兴市| 景洪市|