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 }

 

此为本人学习笔记,若有错误,请不吝赐教