首页 > 奇闻 > 正文内容

电商秒杀场景下的Java线程实战:3种创建方法对比与代码实现

奇闻2025-05-28 07:03:00

锛堟鏂囬噰鐢ㄣ€屽満鏅棶棰?>鎶€鏈柟妗?>浠g爜瀹炵幇->鏂规瀵规瘮銆嶇殑閫掕繘缁撴瀯锛?/p>


鈥?strong>鈥嬪満鏅棝鐐光€?/strong>鈥嬶細鏌愮數鍟嗗钩鍙板湪618绉掓潃娲诲姩涓紝棰戠箒鍑虹幇搴撳瓨瓒呭崠銆佹帴鍙h秴鏃剁瓑闂銆傛妧鏈洟闃熷彂鐜版牳蹇冨師鍥犲湪浜庣嚎绋嬩娇鐢ㄦ柟寮忎笉褰擄細鏈夌殑涓氬姟杩囧害鍒涘缓Thread瀵硅薄锛屾湁鐨勫紓姝ヤ换鍔$己涔忕粺涓€绠$悊...


涓€銆佺户鎵縏hread绫?- 蹇€熼獙璇佸満鏅?/h3>

鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥嬶細鏂板姛鑳藉揩閫熷師鍨嬮獙璇併€佺畝鍗曞崟娆′换鍔℃墽琛?/p>

java澶嶅埗
// 鎶㈣喘鏃ュ織璁板綍绾跨▼
class LogThread extends Thread {
    @Override
    public void run() {
        System.out.println("[" + getName() + "] 寮€濮嬭褰曠鏉€鏃ュ織...");
        // 妯℃嫙鏃ュ織鍐欏叆鎿嶄綔
    }
}

// 浣跨敤绀轰緥
new LogThread().start();  // 鍚姩鍗抽攢姣?/span>

鈿狅笍 缂洪櫡璀︾ず锛氬娆$鏉€璇锋眰浼氫骇鐢熷ぇ閲忕嚎绋嬪璞★紝澧炲姞GC鍘嬪姏


浜屻€佸疄鐜癛unnable鎺ュ彛 - 璧勬簮澶嶇敤鍦烘櫙

鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥嬶細闇€瑕佸叡浜祫婧愶紙濡傜鏉€搴撳瓨锛夈€佹帶鍒跺苟鍙戞祦绋?/p>

java澶嶅埗
// 搴撳瓨鎵e噺浠诲姟
class InventoryTask implements Runnable {
    private static int stock = 100;  // 鍏变韩璧勬簮
    
    @Override
    public void run() {
        synchronized(this) {
            if(stock > 0) {
                System.out.println(Thread.currentThread().getName() 
                    + " 鎵e噺搴撳瓨锛屽墿浣欙細" + --stock);
            }
        }
    }
}

// 浣跨敤绀轰緥
Runnable task = new InventoryTask();
new Thread(task, "鐢ㄦ埛A").start();  // 澶氱嚎绋嬪叡浜悓涓€task
new Thread(task, "鐢ㄦ埛B").start();

馃攽 浼樺娍瑙h锛氱浉鍚屼换鍔″彲澶嶇敤锛屾洿鏄撳疄鐜拌祫婧愬悓姝ユ帶鍒?/p>


涓夈€佺嚎绋嬫睜ExecutorService - 楂樺苟鍙戝満鏅?/h3>

鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥嬶細澶ф祦閲忕鏉€璇锋眰锛堝涓囦汉鍚屾椂鎶㈣喘锛?/p>

java澶嶅埗
// 鍒涘缓鍚?0涓牳蹇冪嚎绋嬬殑绉掓潃绾跨▼姹?/span>
ExecutorService seckillPool = Executors.newFixedThreadPool(10);

// 鎻愪氦1000涓姠璐姹?/span>
IntStream.range(0,1000).forEach(i -> {
    seckillPool.execute(() -> {
        System.out.println(Thread.currentThread().getName() 
            + " 澶勭悊鎶㈣喘璇锋眰ID:" + i);
        // 瀹為檯涓氬姟澶勭悊閫昏緫
    });
});

seckillPool.shutdown();  // 骞虫粦鍏抽棴

馃殌 鐢熶骇绾ч厤缃細寤鸿鑷畾涔塗hreadPoolExecutor锛岃缃槦鍒楀閲忓拰鎷掔粷绛栫暐


鍥涖€佸満鏅寲閫夊瀷鎸囧崡锛堝喅绛栨爲锛?/h3>
  1. 鏄惁闇€瑕佽祫婧愰殧绂伙紵 鈫?鏄細閫塗hread / 鍚︼細閫塕unnable
  2. 璇锋眰閲忔槸鍚﹁秴杩?000娆?绉掞紵 鈫?鏄細蹇呴』鐢ㄧ嚎绋嬫睜
  3. 鏄惁闇€瑕佷换鍔¢槦鍒楃鐞嗭紵 鈫?鏄細閫塗hreadPoolExecutor
  4. 鏄惁娑夊強璧勬簮绔炰簤锛?鈫?鏄細浼樺厛Runnable+鍚屾鏈哄埗

鈥?strong>鈥嬩紭鍖栨垚鏋溾€?/strong>鈥嬶細缁忚繃绾跨▼姹犳敼閫犲悗锛岃骞冲彴鍦ㄥ弻11鏈熼棿鎴愬姛鏀拺5涓嘠PS锛岀郴缁熻祫婧愭秷鑰楅檷浣?0%锛堟暟鎹潵鑷敓浜х洃鎺э級

搜索