多執行緒學習二

2021-07-22 01:52:35 字數 1460 閱讀 6313

買票事例:

先看下面的例子

這樣啟動四個執行緒賣票,其實賣的總數量就是不5張了,而是20張了,這不符合我們的邏輯,實際需要的效果是總共有5張票,分到四個視窗去賣(四個執行緒)。

有沒有解決方法呢?

如果將ticket類的成員變數設定為靜態的。(設定num=10,這樣看的清楚一點)

從下面的結果看申明為static變數,是可以解決這個問題的。

我們再看下面這中情況:

這樣是不是也賣完了票呢?但是我們看到主線程(main)第29行報illegalthreadstateexception報錯了,這是因為thread類中,當乙個執行緒物件啟動後,不能再重新啟動了

多次啟動乙個執行緒是非法的。(總共有main和t執行緒t1,主線程執行到28行時,執行t1執行緒,主線程執行到29行時,主線程發生異常,但是t1執行緒還是會執行的)

假如有兩種票一起賣,比如動車票100張,普通票100張,這個時候用上面說到的什麼靜態變數的方法就不合適了,需要採用下面的方法

多執行緒學習二

lambda表示式 lambda表示式的說明 格式 引數列表 lambda表示式,可以推導,可以省略 1.引數列表 括號中的引數列表的資料型別,可以省略不寫 2.引數列表 括號中的引數如果只有乙個,那麼型別和 都可以省略不寫 3.如果 塊中只有一句 無論是否被有返回值,return,分號都可以否省略...

多執行緒學習(二)

多執行緒概念 併發性和並行性 在共享記憶體的多處理器環境內的同乙個多執行緒程序中,程序中的每個執行緒都可以在一 個 單獨的處理器上併發執行,從而執行並行。如果程序中的執行緒數不超過處理器的數 目,則執行緒的支援系統和操作環境可確保每個執行緒在不同的處理器上執行。例如,在 執行緒數 和處理器數目相同的...

多執行緒學習二

1 package com.service.base 23 public class actor extends thread catch interruptedexception e 2324 if counter 100 2829 30 31 system.out.println getname...