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 }
此為本人學習筆記,若有錯誤,請不吝賜教