多线程与高并发
上天:?
? ?鍛煉解決問題能力
? 高并發 緩存 大流量 大數據量
下地:
? 面試
? JVM OS 算法 線程 ?IO
?
?
? 基本概念
? ? 進程 線程(是一個程序里面不同的執行路徑)? 協程/纖程(quasar)
? ? ?
? ?創建線程的方式
? ? ??1. 繼承Thread類 ? ? ? 2. 實現Runnable接口 ?3. 通過線程池Executors啟動 或者 是通過Lambda表達式創建
public class T02_HowToCreateThread {static class MyThread extends Thread{public void run(){ System.out.println("Hello MyThread");}}static class MyRun implements Runnable{@Overridepublic void run() { System.out.println("Hello MyRun"); }}public static void main(String[] args) {new MyThread().start();new Thread(new MyRun()).start();蘭姆達表達式new Thread(()->{System.out.println("hello lambda!");}).start();} }?
synchronized關鍵字。 synchronized是可重入鎖synchronized的底層實現: JDK早起,synchronized是重量級的, 向OS(操作系統)申請鎖后來做了改進, 進行了鎖升級synchronized(Object). markword記錄這個線程ID?
執行時間(加鎖代碼執行時間)比較短,線程數比較少用自旋鎖
執行時間比較長,線程數比較多用系統鎖?
?
?
volatile
? ? 保證線程可見性
? ? 禁止指令重排序
? ?
?
總結
 
                            
                        - 上一篇: 分布式编程
- 下一篇: 数据结构:选择排序(Selection
