• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Java的多線程技術(shù)探討

    2006-04-19 02:48:00張玉蓉藍(lán)雯飛
    計(jì)算機(jī)教育 2006年4期
    關(guān)鍵詞:線程隊(duì)列進(jìn)程

    張玉蓉 藍(lán)雯飛

    摘要本文以Java的多線程為研究對(duì)象,闡述了Java線程的同步機(jī)制、模型及調(diào)度,討論了Java 在語(yǔ)言級(jí)對(duì)多線程的支持,并對(duì)Java環(huán)境下多線程程序的開(kāi)發(fā)及應(yīng)用進(jìn)行了較深入的探討。

    關(guān)鍵詞進(jìn)程線程同步Java

    1 引言

    Java是一種純面向?qū)ο蟮木幊陶Z(yǔ)言, 它除了具有可移植性、安全性、平臺(tái)無(wú)關(guān)性等優(yōu)點(diǎn)外,其內(nèi)置的多線程機(jī)制是傳統(tǒng)的C和C++所不具有的,Java虛擬機(jī)的很多任務(wù)都依賴線程調(diào)度。如能很好地利用線程,可以大大簡(jiǎn)化應(yīng)用程序設(shè)計(jì),本文詳細(xì)探討了Java的多線程技術(shù)。

    2 線程的相關(guān)概念

    2.1線程與進(jìn)程的概念

    進(jìn)程(Process)是應(yīng)用程序在內(nèi)存環(huán)境中基本的執(zhí)行單元。在Java中,進(jìn)程是有不同的地址空間且處在可執(zhí)行狀態(tài)中的應(yīng)用程序, 從用戶角度來(lái)看,進(jìn)程是應(yīng)用程序的一個(gè)執(zhí)行過(guò)程。線程(Thread)是指進(jìn)程中某個(gè)單一的順序控制流程。新興的操作系統(tǒng),如Mac、Windows NT等大多采用多線程的概念,把線程視為基本執(zhí)行單位。

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

    線程與進(jìn)程一樣,都有其執(zhí)行的開(kāi)始、順序和結(jié)束, 執(zhí)行期間的任一時(shí)刻都有一個(gè)執(zhí)行點(diǎn)。進(jìn)程與線程的重要區(qū)別之一在于線程不能夠單獨(dú)執(zhí)行,它必須運(yùn)行在處于活動(dòng)狀態(tài)的應(yīng)用程序進(jìn)程中,因此可以定義線程是程序內(nèi)部的具有并發(fā)性的順序代碼流。每個(gè)進(jìn)程都可以同時(shí)有執(zhí)行不同任務(wù)的多個(gè)線程。多線程的意義在于一個(gè)應(yīng)用程序的多個(gè)邏輯單元可以并發(fā)地執(zhí)行,但并不意味著多個(gè)用戶進(jìn)程在執(zhí)行,操作系統(tǒng)也不把每個(gè)線程作為獨(dú)立的進(jìn)程來(lái)分配獨(dú)立的系統(tǒng)資源。

    線程與進(jìn)程區(qū)別之二在于二者的通信不同。進(jìn)程可以創(chuàng)建子進(jìn)程,父子進(jìn)程擁有不同的可執(zhí)行代碼和數(shù)據(jù)內(nèi)存空間,因此進(jìn)程間通信復(fù)雜,可能需要管道、消息隊(duì)列、共享內(nèi)存或信號(hào)處理來(lái)保證進(jìn)程間的通信,不僅費(fèi)時(shí)而且有限。而一個(gè)進(jìn)程中的各線程因?yàn)楣蚕淼刂房臻g, 所以它們之間的通信是非常簡(jiǎn)單而有效的, 線程僅是過(guò)程調(diào)用,它們彼此獨(dú)立執(zhí)行,擁有獨(dú)立的執(zhí)行堆棧和程序執(zhí)行上下文。

    2.3線程的生命周期及其狀態(tài)轉(zhuǎn)換

    在Java語(yǔ)言中, 線程自創(chuàng)建后就處于其生命周期中, 程序可以對(duì)線程進(jìn)行各種控制操作,包括啟動(dòng)、終止、掛起、恢復(fù)等, 相應(yīng)地, 線程在不同的生命階段因?yàn)閷?duì)其施加的操作不同就有不同的狀態(tài)。圖1給出了線程可能的各種狀態(tài)以及從一個(gè)狀態(tài)轉(zhuǎn)化為另一種狀態(tài)時(shí)需要進(jìn)行的控制操作。Java線程在其生命周期中,共有五種線程狀態(tài), 如圖1所示。

    (1) Newborn是線程已被創(chuàng)建但尚未執(zhí)行的狀態(tài)。此時(shí)線程對(duì)象已被分配內(nèi)存空間,其私有數(shù)據(jù)已被初始化,線程對(duì)象可通過(guò)start( ) 方法調(diào)度,或者利用stop( )方法取消,新創(chuàng)建的線程一旦被調(diào)度, 就將切換到Runnable狀態(tài)。

    (2) Runnable是線程的就緒狀態(tài),表示線程正等待處理器資源,隨時(shí)等待處理機(jī)調(diào)度執(zhí)行。處于就緒狀態(tài)的線程事實(shí)上已被調(diào)度,線程依據(jù)自身優(yōu)先級(jí)進(jìn)入等待隊(duì)列,等待線程調(diào)度系統(tǒng)給分配CPU時(shí)間。處于就緒狀態(tài)的線程何時(shí)可真正執(zhí)行, 取決于線程優(yōu)先級(jí)以及隊(duì)列的當(dāng)前狀況。

    猜你喜歡
    線程隊(duì)列進(jìn)程
    隊(duì)列里的小秘密
    基于多隊(duì)列切換的SDN擁塞控制*
    軟件(2020年3期)2020-04-20 00:58:44
    債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
    在隊(duì)列里
    豐田加速駛?cè)胱詣?dòng)駕駛隊(duì)列
    淺談linux多線程協(xié)作
    社會(huì)進(jìn)程中的新聞學(xué)探尋
    我國(guó)高等教育改革進(jìn)程與反思
    Linux僵死進(jìn)程的產(chǎn)生與避免
    Linux線程實(shí)現(xiàn)技術(shù)研究
    保亭| 东光县| 金堂县| 柳河县| 华亭县| 南宫市| 嘉义县| 三明市| 六盘水市| 恩平市| 青海省| 潼南县| 韶关市| 于田县| 含山县| 阳信县| 通海县| 永州市| 嘉义县| 杂多县| 定兴县| 扎兰屯市| 阿鲁科尔沁旗| 清丰县| 岱山县| 海林市| 建德市| 崇文区| 开远市| 高青县| 习水县| 响水县| 三穗县| 宁城县| 夏河县| 垫江县| 眉山市| 建阳市| 普安县| 河东区| 阳春市|