1、多執行緒實現方式
(1)使用類thread
在thread子類覆蓋的run方法中編寫執行**
new thread()
catch (interruptedexception e) }}
}.start();
(2)實現runnable介面
在傳遞給thread物件的runnable物件的run方法中編寫**
2 執行緒區域性變數threalocal
(1)threadlocal 的作用和目的:
threadlocal用於實現執行緒內的資料共享,即對於相同的程式**,多個模組在同乙個執行緒中執行時要共享乙份資料,而在另外乙個執行緒中執行時又共享另外乙份資料。
(3)threadlocal 的應用場景:
➢ 訂單處理包含一系列操作:減少庫存量、增加一條流水台賬、修改總賬,這幾個操作要在同乙個
事務中完成,通常也即同乙個執行緒中進行處理,如果累加公司應收款的操作失敗了,則應該把前面
的操作回滾,否則,提交所有操作,這要求這些操作使用相同的資料庫連線物件,而這些操作的**
分別位於不同的模組類中。
➢ 銀行轉賬包含一系列操作: 把轉出帳戶的餘額減少,把轉入帳戶的餘額增加,這兩個操作要在
同乙個事務中完成,它們必須使用相同的資料庫連線物件,轉入和轉出操作的**分別是兩個不同
的帳戶物件的方法。
➢ 例如 strut2 的 actioncontext,同一段**被不同的執行緒呼叫執行時,該**操作的資料是每
個執行緒各自的狀態和資料,對於不同的執行緒來說,getcontext 方法拿到的物件都不相同,對同乙個
執行緒來說,不管呼叫 getcontext 方法多少次和在哪個模組中 getcontext 方法,拿到的都是同一
個。(4)threadlocal的使用方式
①在關聯資料類中建立private static threadloacal
public class serialnum
};public static int get()
}②在util類中建立threadlocal
public class hibernateutil catch (throwable ex)
}//建立執行緒區域性變數 session,用來儲存 hibernate 的 session
public static final threadlocal session = new threadlocal();
/** * 獲取當前執行緒中的 session
* @return session
* @throws hibernateexception
*/public static session currentsession() throws hibernateexception
return s;
}public static void closesession() throws hibernateexception
③在runnable中建立threadlocal
a、在多執行緒的類(如 threaddemo 類)中,建立乙個 threadlocal 物件 thread***,用來儲存執行緒間需要隔離處理的物件 ***。
b、在 threaddemo 類中,建立乙個獲取要隔離訪問的資料的方法 get***(),在方法中判斷,若threadlocal 物件為 null 時候,應該 new()乙個隔離訪問型別的物件,並強制轉換為要應用的型別
c、在 threaddemo 類的 run()方法中,通過呼叫 get***()方法獲取要操作的資料,這樣可以保證每個執行緒對應乙個資料物件,在任何時刻都操作的是這個物件。
java多執行緒面試題
有三個執行緒id分別是a b c,請有多線程式設計實現,在螢幕上迴圈列印10次abcabc 由於執行緒執行的不確定性,要保證這樣有序的輸出,必須控制好多執行緒的同步。執行緒同步有兩種基本方法 1 synchronized 2 wait,notify,notifyall 現在分別採用這兩種方法來解答這...
Java多執行緒面試題
執行緒池的原理,為什麼要建立執行緒池?將預先建立好的執行緒放入執行緒池當中。當有執行緒請求時,則從執行緒池中呼叫執行緒,呼叫結束之後歸還執行緒。當出現需要建立大量執行緒的情況時,反覆的建立執行緒會造成大量的效能損耗。使用執行緒池能降低損耗,提高響應的速度,方便管理執行緒。執行緒的生命週期,什麼時候會...
java多執行緒面試題1
假設如下 中,若t1執行緒在t2執行緒啟動之前已經完成啟動。的輸出是 public static void main stringargs throws exception catch interruptedexception e t1.start thread.sleep 1000 we assu...