Java語言高級篇之多線程(一)初步瞭解線程

這篇開始講Java語言的線程篇,在java中,線程和IO是常常用到的,因此接下來咱們先了解一下線程。仍是經典的「3W」模式,是什麼,有什麼用,怎麼用。java

1、基本概念: 程序、進程、線程

  1. 程序(program):是爲完成特定任務、用某種語言編寫的一組指令的集合。即指一 段靜態的代碼,靜態對象。
  2. 進程(process):是程序的一次執行過程,或是正在運行的一個程序。是一個動態的過程:有它自身的產生、存在和消亡的過程。——生命週期
    例如:電腦正在實時運行的電腦管家、正在打開的瀏覽器。
    注意:程序是靜態的,進程是動態的
    進程做爲資源分配的單位,系統在運行時會爲每一個進程分配不一樣的內存區域
  3. 線程(thread):進程可進一步細化爲線程,是一個程序內部的一條執行路徑。
    注意:1若一個進程同一時間並行執行多個線程,就是支持多線程的 線程做爲調度和執行的單位,每一個線程擁有獨立的運行棧和程序計數器(pc),線程切換的開 銷小 一個進程中的多個線程共享相同的內存單元/內存地址空間它們從同一堆中分配對象,能夠 訪問相同的變量和對象。這就使得線程間通訊更簡便、高效。但多個線程操做共享的系統資 源可能就會帶來安全的隱患

    image.png

四、單核CPU和多核CPU的理解
單核CPU,實際上是一種假的多線程,由於在一個時間單元內,也只能執行一個線程的任務。
例如:雖然有多車道,可是收費站只有一個工做人員在收費,只有收了費 才能經過,那麼CPU就比如收費人員。若是有某我的不想交錢,那麼收費人員能夠 把他「掛起」(晾着他,等他想通了,準備好了錢,再去收費)。可是由於CPU時 間單元特別短,所以感受不出來。瀏覽器

若是是多核的話,才能更好的發揮多線程的效率。(如今的服務器都是多核的) 安全

五、並行與併發
並行:多個CPU同時執行多個任務。好比:多我的同時作不一樣的事。
併發:一個CPU(採用時間片)同時執行多個任務。好比:秒殺、多我的作同一件事服務器

2、多線程的做用是什麼

使用多線程的好處是什麼?網絡

  1. 提升應用程序的響應。對圖形化界面更有意義,可加強用戶體驗。
  2. 提升計算機系統CPU的利用率
  3. 改善程序結構。將既長又複雜的進程分爲多個線程,獨立運行,利於理解和 修改

注意:實際上,多線程並不必定能提高性能(甚至還會下降性能);多線程也不僅是爲了提高性能。多線程

多線程的使用場景:併發

  • 程序須要同時執行兩個或多個任務。
  • 程序須要實現一些須要等待的任務時,如用戶輸入、文件讀寫

操做、網絡操做、搜索等。性能

  • 須要一些後臺運行的程序時

這篇就先講這麼多,下一篇講經過API建立線程以及線程中常見的方法。spa

相關文章
相關標籤/搜索