案例介紹:
假如某網上**推出活動,新上架10部新手機免費送客戶體驗,要求所有參與活動的人員在規定的時間同時參與秒殺掙搶,假如有20人同時參與了該活動,請使用執行緒池模擬這個場景,保證前10人秒殺成功,後10人秒殺失敗;
要求:
1:使用執行緒池建立執行緒
2:解決執行緒安全問題
1:既然商品總數量是10個,那麼我們可以在建立執行緒池的時候初始化執行緒數是10個及以下,設計執行緒池最大數量為10個;
2:當某個執行緒執行完任務之後,可以讓其他秒殺的人繼續使用該執行緒參與秒殺;
3:使用synchronized控制線程安全,防止出現錯誤資料;
**步驟:
1:編寫任務類,主要是送出手機給秒殺成功的客戶;
/*
任務類:
包含了商品數量,客戶名稱,送手機的行為;
*/public class mytask implements runnable
@override
public void run() catch (interruptedexception e)
synchronized (mytask.class)else }}
}
2:編寫主程式類,建立20個任務(模擬20個客戶);
3:建立執行緒池物件並接收20個任務,開始執行任務;
/*
主程式類,測試任務類
*/public class mytest
//3:關閉執行緒池
pool.shutdown();
}}
執行緒池自學筆記1 執行緒池介紹
一 什麼是執行緒池 執行緒池其實就是一種多執行緒處理形式,處理過程中可以將任務新增到佇列中,然後在建立執行緒後自動啟動這些任務。二 為什麼使用執行緒池 使用執行緒池最大的原因就是可以根據系統的需求和硬體環境靈活的控制線程的數量,且可以對所有執行緒進行統一的管理和控制,從而提高系統的執行效率,降低系統...
執行緒池筆記
newsinglethreadexecutor 建立乙個工作執行緒 保證說有任務流程化執行 newfixedthreadpool 建立乙個定長的執行緒池 控制併發數量 超過指定長度在佇列中等待 newcachedthreadpool 建立乙個理論上可以無限大的執行緒池 適合時間短小的任務 cache...
執行緒池筆記
threadpoolexecutor 一 主要的成員變數 ctl 主線程池的控制狀態,它是乙個atomic integer 包含了兩個概念上的域,workercount,執行緒池中有效執行緒的數量。runstate,是否正在執行,關閉等狀態。工作執行緒數量 workercount 就是workers...