1. 程式人生 > >java執行緒安全問題

java執行緒安全問題

併發搶票過程中,如果不加同步鎖,就會出現執行緒不安全問題,導致程式碼執行結果出現嚴重問題。

另外同一個執行緒啟動多次是不允許的。

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
(Ticket.class){     //加同步鎖
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-- +"張票");
}
}
}

}