現有3個執行緒thread1, thread2, thread3。這3個執行緒是併發執行的,當著3個執行緒都執行完成以後,需要執行乙個finish()事件。
1/**定義乙個靜態標記 **/2
private
static
byte nbtemp = 0;34
private
void
aa()
12});
13//
執行緒214 thread thread2 = new thread(new
runnable()
20});
21//
執行緒322 thread thread3 = new thread(new
runnable()
28});
2930
thread1.start();
31thread2.start();
32thread3.start();33}
3435
/**注意:要新增關鍵字「synchronized」,否則會先同時操作bb()方法
*/36
private
synchronized
void
bb()
41 }
1/**定義乙個靜態標記 **/2
private
static
byte nbtemp = 0;
3/**
開始時候的時間戳 **/4
private
long
nlstarttime;
5/**
最大時間戳 **/6
private
long
nlmaxtime;
7/**
finish()方法標記,防止多次執行 **/8
private
boolean
isfirst;
9/**
最小等待時間 *
*/10
private
short nsmintime = 3000;
11/**
最大等待時間 *
*/12
private
short nsmaxtime = 6000;
1314
private
void
aa()
22});
23//
執行緒224 thread thread2 = new thread(new
runnable()
30});
31//
執行緒332 thread thread3 = new thread(new
runnable()
38});
3940
thread threadtimemanager = new thread(new
runnable() catch
(interruptedexception e) {}
47nlstarttime += 1000;
48if(nlcurrenttime
53
}54
}55
});56
57//
記錄當前時間
58nlstarttime =system.currenttimemillis();
59nlcurrenttime = nlstarttime - nsmaxtime + 1; //
最大間隔6s;
60isfirst = true;61
62thread1.start();
63thread2.start();
64thread3.start();
65threadtimemanager.start();66}
6768
/**主要要新增關鍵字「synchronized」,否則會先同時操作bb()方法
*/69
private
synchronized
void
bb() catch
(interruptedexception e) {}
78
}79 finish(); //
條件達成,執行finish();80}
81 }
執行緒安全問題解決方案
實現賣票案例出現了執行緒安全問題,賣出了不存在和重複的票 解決執行緒安全的第一種方法 使用同步 塊 格式 synchronized 鎖物件 注意 1.同步 塊中的鎖物件,可以使用任意物件 2.但是必須保證多個執行緒使用的鎖物件是同乙個 3.鎖物件作用 把同步 塊鎖住,只讓乙個執行緒在同步 塊中執行 ...
Jar Hell 問題解決方案
最近看到溫紹錦的jvm基礎,裡面看到這個jar hell問題的解決方法,之前遇到過一次,是乙個資源檔案,當時覺得挺麻煩,不知道還有這個方法,很棒,特地整理了下,記錄到這裡來,這個部落格開了好長時間了,一直以來也懶得寫東西,以後會堅持更新些。classloader classloader thread...
top K問題解決方案
1.使用最大最小堆。求最大的數用最小堆,求最小的數用最大堆。2.quick select演算法。使用類似快排的思路,根據pivot劃分陣列。3.使用排序方法,排序後再尋找top k元素。4.使用選擇排序的思想,對前k個元素部分排序。5.將1000 個數分成m組,每組尋找top k個數,得到m k個數...