java執行緒安全問題
阿新 • • 發佈:2018-12-26
併發搶票過程中,如果不加同步鎖,就會出現執行緒不安全問題,導致程式碼執行結果出現嚴重問題。
另外同一個執行緒啟動多次是不允許的。
package sx.test.thread;
public class TicketDemo {public static void main(String[] args) {
new Ticket().start();
new Ticket().start();
new Ticket().start();
new Ticket().start();
}
}
class Ticket extends Thread{
private static Integer tickets=100; //總票數, 多個執行緒共用同一個資源,需要用static修飾
@Override
public void run() {
synchronized
while(true){
//如果票數為0,跳出迴圈
if(tickets == 0){
break;
}
//當前執行緒睡眠10ms
try {
Thread.sleep(10); //執行緒1睡眠 執行緒2睡眠 執行緒3睡眠 執行緒4睡眠
} catch (InterruptedException e) {
e.printStackTrace();
}
//列印
System.out.println("剩餘第" + tickets-- +"張票");
}
}
}
}