<em id="h1zbt"><dl id="h1zbt"></dl></em>

<menuitem id="h1zbt"><mark id="h1zbt"><cite id="h1zbt"></cite></mark></menuitem><noframes id="h1zbt">

<sub id="h1zbt"></sub><output id="h1zbt"><b id="h1zbt"></b></output>

<noframes id="h1zbt">

    <track id="h1zbt"><strike id="h1zbt"></strike></track><ruby id="h1zbt"></ruby>
      <big id="h1zbt"><sub id="h1zbt"></sub></big>

        <sub id="h1zbt"></sub>

        承接百度快照優化,SEO優化,網站關鍵詞排名,網絡推廣服務,不上首頁不收費。(灰色勿擾,詳情QQ咨詢)
        當前位置: 東莞SEO > 建站知識 > 草根訪談 >
        聯系我們
        電話咨詢
        E-mail:77681277@qq.com

        多線程模式有什么作用(java多線程必須掌握的知識)

        作者/整理:杜克網絡 來源:互聯網 2019-09-21

        ad

        什么是多進程?

        在計算中,進程是正在執行的計算機程序的一個實例?;蛘吆唵蔚卣f,運行程序也稱為進程。

        多進程意味著“在單個計算機系統中具有兩個或更多個CPU。

        例如,如果計算機系統具有雙核心,并且同時運行(執行)兩個進程(同時),則可以通過將每個進程分配給系統的每個核心來實現。因此,這兩個過程可以同時執行。換句話說,多進程可以定義為多個進程可以同時執行,而不是一個接一個地執行。在多進程中,每個進程都有不同的地址空間和資源。

        什么是多線程?

        進程是線程的集合。線程是一個輕量級的過程。線程執行是執行的小處理單元。

        每個進程包含許多線程,所有線程共享相同的內存空間。

        同一個進程中可以存在多個線程,共享內存等資源,而不同的進程不共享這些資源。

        在單個處理器上,多線程通常通過時分多路復用(如多任務處理):處理器在不同的線程之間切換。

        這種上下文切換通常發生得足夠頻繁,以至于用戶感覺到線程或任務同時運行。

        線程與進程有什么不同?

        線程不同于傳統的多任務操作系統進程:

        進程通常是獨立的,而線程作為進程的子集存在

        進程比線程攜帶更多的狀態信息,而進程內的多個線程共享進程狀態以及內存和其他資源

        進程具有獨立的地址空間,而線程共享其地址空間

        進程只能通過系統提供的進程間通信機制進行交互

        同一進程中的線程之間的上下文切換通常比進程之間的上下文切換更快

        多線程調度

        操作系統通過以下兩種方式之一來調度線程:

        先發制人的多線程一般被認為是優越的方法,因為它允許操作系統確定何時發生上下文切換。搶占式多線程的缺點是系統可能會在不恰當的時間進行上下文切換,引起鎖車隊,優先級反轉或其他負面影響,這可能會通過協作式多線程來避免。

        另一方面,合作多線程依賴于線程自己放棄控制,一旦他們在停止點。如果線程正在等待資源變為可用狀態,則會產生問題。

        線程的保護機制

        一個線程將共享父進程的所有全局變量和文件描述符,允許程序員在一個進程內輕松地分離多個任務。

        它共享一切,除了每個線程將有自己的程序計數器,堆棧和寄存器。由于每個線程都有自己的堆棧,所以線程之間不會共享局部變量。

        由于一個進程的所有線程共享相同的全局變量,所以同步訪問全局變量會出現問題。例如,我們假設你有一個全局變量X和兩個線程A和B.假設線程A和B只會增加X的值。當線程A開始執行時,它將把X的值復制到寄存器中并遞增。在它有機會將值寫回內存之前,此線程被暫停。下一個線程開始,讀取第一個線程讀取的相同的X值,遞增并寫回到內存。然后,第一個線程完成執行并將其值從寄存器寫回到內存。在這兩個線程完成之后,X的值會按照您的預期遞增1而不是2。

        NANA在线观看高清视频