• (对于继承Thread类)线程安全问题解决方式二:同步静态方法


     1 package day2_4;
     2 
     3 /**
     4  * 使用同步方法解决继承Thread类的线程安全问题
     5  *
     6  * <p>
     7  * 如果操作共享数据的代码完整的声明在一个方法中,在方法定义上,用synchronized修饰,即同步方法
     8  *
     9  * 关于同步方法的总结:
    10  * 1.同步方法仍然涉及到同步监视器,只是不需要我们显式的声明
    11  * 2.非静态的同步方法,默认的同步监视器是:this
    12  *   静态的同步方法,默认的同步监视器是:当前类本身
    13  *
    14  * @Author Tianhao
    15  * @create 2021-02-05-15:04
    16  */
    17 
    18 
    19 class Window6 extends Thread {
    20     private static int ticket = 100;
    21 
    22     @Override
    23     public void run() {
    24         while (ticket > 0) {
    25             sale();
    26             try {
    27                 sleep(10);
    28             } catch (InterruptedException e) {
    29                 e.printStackTrace();
    30             }
    31         }
    32     }
    33 
    34     //不正确,因为多个线程的同步监视器不能共享,所以不能实现同步
    35     //private synchronized void sale() {//默认的同步监视器仍然是this,也就是t1,t2,t3
    36     //正确的,同步的静态方法
    37     private static synchronized void sale(){ //记住加上static修饰,默认同步监视器就是当前类的Class对象(Window6.class)
    38         if (ticket > 0) {
    39             System.out.println(Thread.currentThread().getName() + "卖票,票号:" + ticket);
    40             ticket--;
    41         }
    42     }
    43 
    44 }
    45 
    46 
    47 public class WindowTest6 {
    48     public static void main(String[] args) {
    49         Window6 t1 = new Window6();
    50         Window6 t2 = new Window6();
    51         Window6 t3 = new Window6();
    52         t1.setName("窗口1");
    53         t2.setName("窗口2");
    54         t3.setName("窗口3");
    55         t1.start();
    56         t2.start();
    57         t3.start();
    58     }
    59 
    60 
    61 }
  • 相关阅读:
    Preparing for Merge Sort(二分)
    Polycarp's phone book(unordered_mpa 大法好)
    Yet Another Task with Queens
    nginx 初时
    JSON.stringfiy 序列化
    css grid布局使用
    遍历对象属性5种方法,排列顺序规则
    归并方法
    处理地图经纬度,保留6位小数
    js 操作方法
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14378131.html
Copyright © 2020-2023  润新知