動(dòng)腦安卓移動(dòng)互聯(lián)網(wǎng)架構(gòu)開發(fā)5期\/--》ccys1473
四、線程同步
??1.介紹
**多個(gè)線程操作同一個(gè)資源 **
2.不安全的線程案例
//不安全買票
public class Demo24_UnsafeBuyTicket {
? ? public static void main(String[] args) {
? ? ? ? BuyTicket buyTicket = new BuyTicket();
? ? ? ? new Thread(buyTicket, "張三").start();
? ? ? ? new Thread(buyTicket, "李四").start();
? ? ? ? new Thread(buyTicket, "王五").start();
? ? }
}
class BuyTicket implements Runnable {
? ? //票
? ? private int ticketNums = 10;
? ? boolean flag = true;
? ? @Override
? ? public void run() {
? ? ? ? //買票
? ? ? ? while (flag) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? buy();
? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? //買票
? ? private void buy() {
? ? ? ? //判斷是否有票
? ? ? ? if (ticketNums <= 0) {
? ? ? ? ? ? flag = false;
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? //延遲
? ? ? ? try {
? ? ? ? ? ? Thread.sleep(1);
? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? //買票
? ? ? ? System.out.println(Thread.currentThread().getName() + "拿到" + ticketNums--);
? ? }
}