国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java線程基礎

2019-11-06 08:48:04
字體:
來源:轉載
供稿:網友

1、進程和線程的區別

進程:每個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換會有較大的開銷,一個進程包含1--n個線程。

  線程:同一類線程共享代碼和數據空間,每個線程有獨立的運行棧和程序計數器(PC),線程切換開銷小。

  線程和進程一樣分為五個階段:創建、就緒、運行、阻塞、終止。

  多進程是指操作系統能同時運行多個任務(程序)。

  多線程是指在同一程序中有多個順序流在執行。

   區別

         進程和線程的主要差別在于它們是不同的操作系統資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生

影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,

所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發

操作,只能用線程,不能用進程。

1) 簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.2) 線程的劃分尺度小于進程,使得多線程程序的并發性高。3) 進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。4)線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,

必須依存在應用程序中,由應用程序提供多個線程執行控制。5)從邏輯角度來看,多線程的意義在于一個應用程序中,有多個執行部分可以同時執行。但操作系統并沒有將多個線程看做多個獨立的應用,

來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。

優缺點:

線程和進程在使用上各有優缺點:線程執行開銷小,但不利于資源的管理和保護;而進程正相反。同時,線程適合于在SMP機器上運行,

而進程則可以跨機器遷移。

     建議:進程與線程的詳細解釋

線程與進程的通俗解釋

2、在java中如何實現線程

     (1)繼承Thread類創建線程      Thread類本質上是實現了Runnable接口的一個實例,代表一個線程的實例。啟動線程的唯一方法就是通過Thread類的start()實例方法。start()方法是一個native方法,它將啟動一個新線程,并執行run()方法。這種方式實現多線程很簡單,通過自己的類直接extend Thread,并復寫run()方法,就可以啟動新線程并執行自己定義的run()方法。

   通過thread源碼看到,thread中start方法最后調用的是本地方法。native 詳解

     (2)實現Runnable接口創建線程     如果自己的類已經extends另一個類,就無法直接extends Thread,此時,可以實現一個Runnable接口,如下:為了啟動MyThread,需要首先實例化一個Thread,并傳入自己的MyThread實例:事實上,當傳入一個Runnable target參數給Thread后,Thread的run()方法就會調用target.run(),參考JDK源代碼:

      (3)使用ExecutorService、Callable、Future實現有返回結果的多線程

    這些在另外一篇java線程池中講述。

3、問題

    

    (1)Thread 類中的start() 和 run() 方法有什么區別?

   (2)用Runnable還是Thread?


上一篇:linux下配置Java環境

下一篇:Java編譯過程

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏津县| 密云县| 安溪县| 屏南县| 宁乡县| 建始县| 洛宁县| 武邑县| 东光县| 花莲县| 巨鹿县| 武鸣县| 应城市| 林周县| 乡宁县| 翁牛特旗| 社旗县| 开远市| 邓州市| 习水县| 武城县| 余姚市| 肥乡县| 额济纳旗| 大安市| 邛崃市| 锡林浩特市| 龙泉市| 宣城市| 长泰县| 绥宁县| 舒兰市| 武隆县| 广昌县| 米泉市| 垫江县| 洛浦县| 郁南县| 聂荣县| 托克逊县| 寻乌县|