| 風險類型 | 表現 |
| 安全風險 | 競態條件導致數據不一致、死鎖、活鎖 |
| 性能風險 | 上下文切換開銷、鎖爭用降低吞吐量、過度創建線程耗盡資源 |
創建線程的兩種標準方式
1. 繼承 Thread 類
public class ThreadTest extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) System.out.println("thread:" + i);
}
public static void main(String[] args) {
new ThreadTest().start();
for (int i = 0; i < 10; i++) System.out.println("main:" + i);
}
}
2. 實現 Runnable 接口(推薦)
public class RunnableTest implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) System.out.println("thread:" + i);
}
public static void main(String[] args) {
new Thread(new RunnableTest()).start();
for (int i = 0; i < 10; i++) System.out.println("main:" + i);
}
}
優勢:避免單繼承限制,任務與執行分離,便於線程池復用。
線程池技術
通過 Executors 工廠快速創建:
ExecutorService pool = Executors.newFixedThreadPool(99);
pool.execute(new TaskThread("t1"));
pool.execute(new TaskThread("t2"));
常用池類型:
newFixedThreadPool:固定大小,適合負載穩定場景
newCachedThreadPool:可伸縮,適合大量短任務
newSingleThreadExecutor:串行執行,保證順序
newScheduledThreadPool:定時/周期任務
進階學習路線
- 線程安全:
synchronized、Lock、volatile、原子類
- 線程協作:
wait/notify、Condition、CountDownLatch、CyclicBarrier
- 並發容器:
ConcurrentHashMap、CopyOnWriteArrayList、阻塞隊列
- 執行框架:
Future、CompletableFuture、ForkJoinPool
- 上一篇文章: Java TCP Socket 編程實戰:客戶端與服務端通信完整示例
- 下一篇文章: Java Properties 屬性文件完整讀寫指南與最佳實踐
Copyright ©
程式碼之家 All Rights Reserved