Java-多執行緒-安全性-同步方法技術
阿新 • • 發佈:2020-08-27
package cn.bruce.Thread; //多執行緒售票案例 //解決安全問題,JAVA程式提供了同步技術synchronized(任意物件){執行緒要操作的共享資料} //同步程式碼塊 public class MoreThreadDemo2 { public static void main(String[] args) { // 建立Runnable介面實現類物件 Tickets t = new Tickets(); // 建立三個Thread類物件,傳遞Runnable介面實現類 Thread t0 = new Thread(t, "視窗1"); Thread t1= new Thread(t, "視窗2"); Thread t2 = new Thread(t, "視窗3"); // 開啟執行緒 t0.start(); t1.start(); t2.start(); } } class Tickets implements Runnable { private int number = 100; public void run() { while (true) { payTicket(); } }// 同步方法有鎖嗎?有的,同步方法中的物件鎖就是this(本類物件引用) // 如果方法是靜態呢?鎖物件不是this,是本類自己.class public synchronized void payTicket() {// 同步方法技術 // 對票數做判斷,大於0 可以出售 if (number > 0) { try { Thread.sleep(10);// 使用休眠,模擬CPU切換 System.out.println(Thread.currentThread().getName() + "出售第" + number--); }catch (Exception e) { e.printStackTrace(); } } } }