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

java中進(jìn)程與線程_三種實現(xiàn)方式總結(jié)(必看篇)

 更新時間:2017年06月05日 08:01:57   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava中進(jìn)程與線程_三種實現(xiàn)方式總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一:進(jìn)程與線程

概述幾乎任何的操作系統(tǒng)都支持運行多個任務(wù),通常一個任務(wù)就是一個程序,而一個程序就是一個進(jìn)程。當(dāng)一個進(jìn)程運行時,內(nèi)部可能包括多個順序執(zhí)行流,每個順序執(zhí)行流就是一個線程。

進(jìn)程進(jìn)程是指處于運行過程中的程序,并且具有一定的獨立功能。進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個單位。當(dāng)程序進(jìn)入內(nèi)存運行時,即為進(jìn)

進(jìn)程的三個特點:

1:獨立性:進(jìn)程是系統(tǒng)中獨立存在的實體,它可以獨立擁有資源,每一個進(jìn)程都有自己獨立的地址空間,沒有進(jìn)程本身的運行,用戶進(jìn)程不可以直接訪問其他進(jìn)程的地址空間。

2:動態(tài)性:進(jìn)程和程序的區(qū)別在于進(jìn)程是動態(tài)的,進(jìn)程中有時間的概念,進(jìn)程具有自己的生命周期和各種不同的狀態(tài)。

3:并發(fā)性:多個進(jìn)程可以在單個處理器上并發(fā)執(zhí)行,互不影響。

并發(fā)性和并行性是不同的概念:并行是指同一時刻,多個命令在多個處理器上同時執(zhí)行;并發(fā)是指在同一時刻,只有一條命令是在處理器上執(zhí)行的,但多個進(jìn)程命令被快速輪換執(zhí)行,使得在宏觀上具有多個進(jìn)程同時執(zhí)行的效果

注:

線程:

線程是進(jìn)程的組成部分,一個進(jìn)程可以擁有多個線程,而一個線程必須擁有一個父進(jìn)程。線程可以擁有自己的堆棧,自己的程序計數(shù)器和自己的局部變量,但不能擁有系統(tǒng)資源。它與父進(jìn)程的其他線程共享該進(jìn)程的所有資源

線程的特點:

線程可以完成一定任務(wù),可以和其它線程共享父進(jìn)程的共享變量和部分環(huán)境,相互協(xié)作來完成任務(wù)。

線程是獨立運行的,其不知道進(jìn)程中是否還有其他線程存在。

線程的執(zhí)行是搶占式的,也就是說,當(dāng)前執(zhí)行的線程隨時可能被掛起,以便運行另一個線程。

一個線程可以創(chuàng)建或撤銷另一個線程,一個進(jìn)程中的多個線程可以并發(fā)執(zhí)行。

二、線程的創(chuàng)建及使用

java使用Thread類代表線程,所有的線程對象都必須是Thread或者其子類的實例,每個線程的作用是完成一定任務(wù),實際上是就是執(zhí)行一段程序流(一段順序執(zhí)行的代碼)

方案一:繼承Thread類創(chuàng)建線程類

步驟:① 定義Thread類的子類 并重寫該類的Run方法,該run方法的方法體就代表了該線程需要完成的任務(wù)

② 創(chuàng)建Thread類的實例,即創(chuàng)建了線程對象

③ 調(diào)用線程的start方法來啟動線程

結(jié)論:使用繼承子Thread類的子類來創(chuàng)建線程類時,多個線程無法共享線程類的實例變量(比如上面的i)

方案二:實現(xiàn)Runnable接口

①定義Runnable接口的實現(xiàn)類,并重寫它的Run方法,run方法同樣是該線程的執(zhí)行體

創(chuàng)建Runnable實現(xiàn)類的實例,并將此實例作為Thread的target創(chuàng)建一個Thread對象,該Thread對象才是真正的線程對象!

調(diào)用start方法啟動該線程

結(jié)論:采用Ruunable接口的方式創(chuàng)建多個線程可以共享線程類的實例變量,這是因為在這種方式下,程序創(chuàng)建的Runnable對象只是線程的target,而多個線程可以共享一個target,所以多個線程可以共享一個實例變量

通過Runnable實現(xiàn)多線程其實就是將run包裝成線程的執(zhí)行體,但是目前java無法將任意方法包裝成線程執(zhí)行體

方案三:使用callable和future創(chuàng)建線程Java5開始,Java提供 Callable接口,Callable接口提供了一個call()方法可以作為線程執(zhí)行體,看起來和Runnable很像,但call()方法更強大——call()方法可以有返回值、call()方法可以拋出異常

Java5提供了Future接口來代表Callable接口的call()方法的返回值,并Future接口提供了一個FutureTask實現(xiàn)類,該實現(xiàn)類實現(xiàn)類Future接口,也實現(xiàn)了Runnable接口——可以作為Thread的target。

實現(xiàn)步驟:

①創(chuàng)建Callable接口的實現(xiàn)類,并實現(xiàn)call方法,call方法會成為線程執(zhí)行體,且call方法具有返回值,在創(chuàng)建callable接口的實現(xiàn)類!

②使用FutrueTask類來包裝Callable對象,FutrueTask封裝類Callable的call方法的返回值

③使用FutrueTask對象作為Thread的target創(chuàng)建并啟動新線程!

使用FutrueTask的get方法獲取執(zhí)行結(jié)束后的返回值

結(jié)論:采取Runnable、Callable的優(yōu)勢在于——線程類只是實現(xiàn)了Runnable或Callable接口,還可以繼承其它類;在這種方法下,多個線程可以共享一個target對象,因此非常適合多個相同線程處理同一份資源的情況,從而將CPU、代碼和數(shù)據(jù)分開,形參清晰的模型,體現(xiàn)了面對對象的編程思想。劣勢在于編程復(fù)雜度略高。

以上這篇java中進(jìn)程與線程_三種實現(xiàn)方式總結(jié)(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot使用nacos的示例詳解

    springboot使用nacos的示例詳解

    這篇文章主要介紹了springboot使用nacos的示例代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • SpringMVC自定義日期轉(zhuǎn)換器方式

    SpringMVC自定義日期轉(zhuǎn)換器方式

    這篇文章主要介紹了SpringMVC如何自定義日期轉(zhuǎn)換器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java控制語句之if、switch語句

    Java控制語句之if、switch語句

    這篇文章主要介紹了Java控制語句之if、switch語句的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 詳解SpringCloud新一代網(wǎng)關(guān)Gateway

    詳解SpringCloud新一代網(wǎng)關(guān)Gateway

    SpringCloud Gateway是Spring Cloud的一個全新項目,Spring 5.0+ Spring Boot 2.0和Project Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),它旨在為微服務(wù)架構(gòu)提供一種簡單有效的統(tǒng)一的API路由管理方式
    2021-06-06
  • Spring boot詳解緩存redis實現(xiàn)定時過期方法

    Spring boot詳解緩存redis實現(xiàn)定時過期方法

    本篇文章分享的就是spring boot中的一個輪子,spring cache注解的方式實現(xiàn)接口數(shù)據(jù)緩存。默認(rèn)的配置想非常簡單,但是有一個弊端是緩存數(shù)據(jù)為永久緩存,本次將介紹如何設(shè)置接口緩存數(shù)據(jù)的過期時間
    2022-07-07
  • Springboot基于websocket實現(xiàn)簡單在線聊天功能

    Springboot基于websocket實現(xiàn)簡單在線聊天功能

    這篇文章主要介紹了Springboot基于websocket實現(xiàn)簡單在線聊天功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot+mybatis+Vue實現(xiàn)前后端分離項目的示例

    SpringBoot+mybatis+Vue實現(xiàn)前后端分離項目的示例

    本文主要介紹了SpringBoot+mybatis+Vue實現(xiàn)前后端分離項目的示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java編程BigDecimal用法實例分享

    Java編程BigDecimal用法實例分享

    這篇文章主要介紹了Java編程BigDecimal用法實例分享,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Springmvc RequestMapping請求實現(xiàn)方法解析

    Springmvc RequestMapping請求實現(xiàn)方法解析

    這篇文章主要介紹了Springmvc RequestMapping請求實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 基于SpringBoot bootstrap.yml配置未生效的解決

    基于SpringBoot bootstrap.yml配置未生效的解決

    這篇文章主要介紹了基于SpringBoot bootstrap.yml配置未生效的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論

滁州市| 苏尼特左旗| 密云县| 额尔古纳市| 三台县| 兴国县| 邳州市| 洛川县| 丽江市| 辉县市| 新源县| 南川市| 河曲县| 宜春市| 三原县| 舒城县| 江华| 沛县| 长汀县| 吴旗县| 城步| 图片| 苗栗市| 壶关县| 陵川县| 万全县| 博罗县| 旬邑县| 玛沁县| 恭城| 山阴县| 凤山市| 科尔| 清水县| 土默特右旗| 岑巩县| 南和县| 辽宁省| 大厂| 柳江县| 武隆县|