1. 程式人生 > 實用技巧 >thinkphp5框架載入流程

thinkphp5框架載入流程

0.多執行緒重點:執行緒實現 執行緒同步

1.執行緒簡介

多工:同時做多個事情,看起來是多個任務都在做,其實本質上我們的大腦在同一時間內只做一件事。

多執行緒例子:一條車道,車太多,會造成道路堵塞,效率極低,為了提高效率,充分利用道路,於是加了多個車道。

生活中的多執行緒例子:打遊戲與朋友開黑

普通方法呼叫和多執行緒的區別

程式,程序,執行緒

程序:在作業系統中執行的程式就是程序,比如QQ,遊戲,IDEA

一個程序可以有多個執行緒,如視訊中同時可以聽到聲音,看到影象和彈幕等等

程式是指令和資料的有序集合,其本身沒有任何執行的含義,是一個靜態的概念。

程序(Process):程序是執行程式的一次執行過程,它是一個動態的概念。是系統資源分配的單位。

通常在一個程序中可以包含若干個執行緒,當然一個程序中至少有一個執行緒,不然沒有存在的意義。執行緒是CPU排程和執行的單位。

注意:很多多執行緒是模擬出來的,真正的多執行緒是指有多個CPU,即多核,如伺服器。

   如果是模擬出來的多執行緒,即在一個CPU的情況下,在同一時間點,CPU只能執行一個程式碼,因為切換的很快,所有就有同事執行的錯覺。

執行緒核心概念

  • 執行緒是獨立的執行路徑
  • 在程式執行時,即使沒有自己建立執行緒,後臺也會有多個執行緒,如主執行緒,GC執行緒
  • main()稱之為主執行緒,為系統的入口,用於執行整個程式
  • 在一個程序中,如果開闢了多個執行緒,執行緒的執行由排程器(CPU)安排排程,排程器是與作業系統緊密相關的,先後順序是不能人為的干預
  • 對同一份資源操作時,會存在資源搶奪的問題,需要加入併發控制。
  • 執行緒會帶來額外的開銷,如CPU排程時間,併發控制開銷
  • 每個執行緒在自己的工作記憶體互動,記憶體控制不當會造成資料不一致

2.執行緒建立

執行緒建立的三種方式

  1. 繼承Thread類
  2. 實現Runnable介面
  3. 實現Callable介面

1.繼承Thread

  • 自定義執行緒類繼承Thread
  • 重寫run()方法,編寫執行緒執行體
  • 建立執行緒物件,呼叫start()方法啟動執行緒
 1 /*
 2 * 建立執行緒方式一:繼承Thread類,重寫run()方法,呼叫start開啟執行緒
 3 * */
 4 public class TestThread1 extends
Thread{ 5 @Override 6 public void run() { 7 //run方法執行緒體 8 for (int i = 0; i < 200; i++) { 9 System.out.println("我在看程式碼--"+i); 10 } 11 } 12 13 public static void main(String[] args) { 14 //main執行緒 主執行緒 15 //建立一個執行緒物件 16 TestThread1 testThread1 = new TestThread1(); 17 //呼叫start()方法開啟執行緒 18 testThread1.start(); 19 for (int i = 0; i < 1000; i++) { 20 System.out.println("我在學習多執行緒"+i); 21 } 22 } 23 }

說明兩個執行緒是同時執行的

執行緒不一定立即執行,CPU安排排程

Process