zoukankan      html  css  js  c++  java
  • (对于实现Runnable接口)线程安全问题解决方式二:同步方法

     1 package day2_4;
     2 
     3 /**
     4  *  使用同步方法解决实现Runnbale接口的线程安全问题
     5  *
     6  * <p>
     7  * 如果操作共享数据的代码完整的声明在一个方法中,在方法定义上,用synchronized修饰,即同步方法
     8  *
     9  * 关于同步方法的总结:
    10  * 1.同步方法仍然涉及到同步监视器,只是不需要我们显式的声明
    11  * 2.非静态的同步方法,默认的同步监视器是:this
    12  *   静态的同步方法,默认的同步监视器是:当前类本身
    13  *
    14  * @Author Tianhao
    15  * @create 2021-02-05-14:21
    16  */
    17 
    18 
    19 class Window5 implements Runnable {
    20     private int ticket = 100;
    21 
    22     @Override
    23     public void run() {
    24         while (ticket > 0) {
    25             sale();
    26             //Thread.currentThread().yield();
    27             try {
    28                 Thread.sleep(1);
    29             } catch (InterruptedException e) {
    30                 e.printStackTrace();
    31             }
    32         }
    33     }
    34 
    35     //因为Window5对象w是多个对象共享的,所以
    36     //默认的同步监视器就是this,也就是Window5对象w
    37     private synchronized void sale() {
    38         if (ticket > 0) {
    39             System.out.println(Thread.currentThread().getName() + "卖票,票号:" + ticket);
    40             ticket--;
    41         }
    42     }
    43 }
    44 
    45 public class WindowTest5 {
    46     public static void main(String[] args) {
    47         Window5 w = new Window5();
    48         Thread t1 = new Thread(w);
    49         Thread t2 = new Thread(w);
    50         Thread t3 = new Thread(w);
    51         t1.setName("窗口1");
    52         t2.setName("窗口2");
    53         t3.setName("窗口3");
    54         t1.start();
    55         t2.start();
    56         t3.start();
    57 
    58     }
    59 
    60 }
  • 相关阅读:
    jQuery点击弹出遮罩层(弹出模态框),点击模态框消失
    ubuntu delect opencv
    protobuf安装
    caffe中使用matlab接口
    protobuf安装
    caffe安装2
    caffe安装1
    PHP学习笔记,js
    PHP学习笔记-动态属性添加
    Ubuntu14.04安装Moodle
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14378113.html
Copyright © 2011-2022 走看看