1 package com.atfu.java01; 2 3 /** 4 * 5 * 使用同步方法解决Runnable接口线程的安全问题 6 * 7 * @author fu jingchao 8 * @creat 2021/10/17-15:48 9 */ 10 class Window3 implements Runnable{ 11 private int ticket = 100; 12 @Override 13 public void run() { 14 while (ticket>0){ 15 show(); 16 } 17 } 18 private synchronized void show(){//默认同步监视器为 this 19 if (ticket > 0) { 20 try { 21 Thread.sleep(100); 22 } catch (InterruptedException e) { 23 e.printStackTrace(); 24 } 25 System.out.println(Thread.currentThread().getName() + ":" + ticket); 26 ticket--; 27 } 28 } 29 } 30 31 public class WindowTest3 { 32 public static void main(String[] args) { 33 Window3 w = new Window3(); 34 35 Thread t1 = new Thread(w); 36 Thread t2 = new Thread(w); 37 Thread t3 = new Thread(w); 38 39 t1.setName("线程1"); 40 t2.setName("线程2"); 41 t3.setName("线程3"); 42 43 t1.start(); 44 t2.start(); 45 t3.start(); 46 47 } 48 }