Java多線程的概念以及優缺點、多線程的地位

你們好,樂字節小樂有來咯,上次說完了Java網絡編程探究|樂字節,此次咱們來看看線程相關的吧。java

Java線程主要講述的內容有:
圖片描述編程

一、線程概念

多線程,說白了就是多條執行路徑,原來是一條路徑,就主路徑(main),如今是多條路徑。就至關於高速路,原來是一條路,由於車多了,爲提升使用效率,充分使用這條道路,中間加了個柵欄, 變成了多條車道。
圖片描述服務器

注意: 全部的車共享這條套路。網絡

原來的執行程序爲一條路徑,如今加入多線程則存在多條執行路徑。多線程

1)、一條路徑

方法間的調用爲一條路徑,如:併發

public class OneRoute {
public static void main(String[] args) {
System.out.print("只有");
int result =a();
System.out.print("-->"+result);
}
public static int a(){
System.out.print("main");
return b()*100;
}
public static int b(){
System.out.print("一條路徑"); return 1;
}
}
圖片描述spa

2)、兩條路徑

開闢新的線程,爲兩條執行路徑。操作系統

public class ThreadRoute {
public static void main(String[] args) {
System.out.print("多條路徑");
new Route().start();
System.out.print("main-->");
} }
class Route extends Thread{
public void run() {
a();
}
public int a(){
System.out.print("thread");
return b()*100;
}
public int b(){
System.out.print("一條路徑");
return 1;
}
}
圖片描述線程

二、程序、進程與多線程

程序是指令的集合,代碼的集合;而進程是動態的概念,當程序在執行時,系統分配進設計

程;多線程是在同一進程下,充分利用資源 ,多條執行路徑,共享資源 (cpu data code)。
圖片描述

注意:

不少多線程是模擬出來的,真正的多線程是指有多個 cpu,即多核,如服務器。若是是模擬出來的多線程,即一個 cpu 的狀況下,在同一個時間點,cpu 只能執行一個代碼, 由於切換的很快,因此就有同時執行的錯覺。

三、多線程優缺點

1)、優勢

資源利用率更好;程序設計在某些狀況下更簡單;程序響應更快

2)、缺點

a)設計更復雜雖然有一些多線程應用程序比單線程的應用程序要簡單,但其餘的通常

都更復雜。在多線程訪問共享數據的時候,這部分代碼須要特別的注意。線程之間的交互往

往很是複雜。不正確的線程同步產 生的錯誤很是難以被發現,而且重現以修復。

b)上下文切換的開銷 當 CPU 從執行一個線程切換到執行另一個線程的時候,它須要

先存儲當前線程的本地的數據,程序 指針等,而後載入另外一個線程的本地數據,程序指針

等,最後纔開始執行。這種切換稱爲「上下文切 換」(「context switch」)。CPU 會在一

個上下文中執行一個線程,而後切換到另一個上下文中執 行另一個線程。上下文切換

並不廉價。若是沒有必要,應該減小上下文切換的發生。

四、多線程地位

線程在 java 中的地位很是重要,可是比較難以理解,慶幸的是在實際工做中,直接編

寫線程的代碼很少;線程在手寫服務器用的不少,固然如今的服務器都是其餘公司寫好的,

直接拿來用便可,若是真的想把多線程學好,須要掌握不少知識,如操做系統原理、併發機

制等。 對於目前的你們來講,線程掌握如下便可:

  • 建立線程的方式
  • sleep
  • 中止線程
  • Thread.currentThread
  • 簡單的 synchronized

關於Java多線程的概念和優缺點就介紹到這,下一篇將會講講如何建立多線程。謝謝你們,請關注樂字節!

相關文章
相關標籤/搜索