zoukankan      html  css  js  c++  java
  • (对于继承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 }
  • 相关阅读:
    小程序ArrayBuffer转JSON
    梅林路由修改hosts
    小程序半屏弹窗(Half Screen Dialog)插槽(Slot)无效的解决方法
    [小程序]存在将未绑定在 WXML 的变量传入 setData 的解决方法!
    小程序scroll-view指定高度
    修改小程序mp-halfScreenDialog组件高度
    小程序图片懒加载组件 mina-lazy-image
    OpenCOLLADA v1.6.68 MAYA MAX 全文件
    位运算相关知识
    全排列 next_permutation() 函数
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14378131.html
Copyright © 2011-2022 走看看