1 package com.atfu.java01;
2
3 /**
4 * 例子:建立三個視窗賣票,總票數為100張,使用繼承Thread類的方式。
5 *
6 *使用同步方法解決繼承Thread類的方式的線程安全問題
7 *
8 * 關于同步方法的總結:
9 * 1.同步方法任然涉及到同步螢幕,隻是不需要我們顯示的聲明。
10 * 2.非靜态的同步方法,同步螢幕:this
11 * 3.靜态的同步方法,同步螢幕:目前類本身
12 *
13 *
14 *
15 * @author fu jingchao
16 * @creat 2021/10/17-14:59
17 */
18 class Window4 extends Thread{
19 private static int ticket = 100;
20 private static Object obj = new Object();
21 @Override
22 public void run() {
23 while (true) {
24 show();
25 }
26 }
27 private static synchronized void show(){//同步螢幕:Window4.class
28 //private synchronized void show(){//同步螢幕:t1,t2,t3,此種解決方式是錯誤的
29 if (ticket > 0) {
30 try {
31 Thread.sleep(100);
32 } catch (InterruptedException e) {
33 e.printStackTrace();
34 }
35 System.out.println(Thread.currentThread().getName() + ":賣票,票号為:" + ticket);
36 ticket--;
37 }
38 }
39 }
40
41 public class WindowTest4 {
42 public static void main(String[] args) {
43 Window4 w1 = new Window4();
44 Window4 w2 = new Window4();
45 Window4 w3 = new Window4();
46
47 w1.setName("視窗一");
48 w2.setName("視窗二");
49 w3.setName("視窗三");
50
51 w1.start();
52 w2.start();
53 w3.start();
54 }
55 }
此為本人學習筆記,若有錯誤,請不吝賜教