1 package bytezero.threadsynchronization;
2
3
4
5 /**
6 * 使用同步方法解决实现 继承 Thread类 的线程安全问题
7 *
8 *
9 *
10 * @author Bytezero1·zhenglei! Email:420498246@qq.com
11 * create 2021-10-17 16:38
12 */
13 class WindowM extends Thread{
14 private static int ticket = 100;
15
16 @Override
17 public void run() {
18 while (true){
19
20 show();
21 }
22 }
23
24 private static synchronized void show(){ //同步监视器:WindowM.class
25 // private synchronized void show(){ //同步监视器: w1 w2 w3 此种解决方式是错误的
26 if(ticket > 0){
27 try {
28 Thread.sleep(100);
29 } catch (InterruptedException e) {
30 e.printStackTrace();
31 }
32 System.out.println(Thread.currentThread().getName() + ":卖票,票号为:"+ticket);
33 ticket--;
34 }
35 }
36
37 }
38
39
40 public class WindowMethod {
41 public static void main(String[] args) {
42 WindowM w1 = new WindowM();
43 WindowM w2 = new WindowM();
44 WindowM w3 = new WindowM();
45
46 w1.setName("窗口1");
47 w2.setName("窗口2");
48 w3.setName("窗口3");
49
50 w1.start();
51 w2.start();
52 w3.start();
53
54 }
55
56 }

........

Java 多线程------解决 实现继承 Thread类 方式线程的线程安全问题 方式二:同步方法的更多相关文章

  1. java多线程(一)之继承Thread类

    一.概述 进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 二.两种实现方式, 下面为第一种方式: 继承Thread类 ...

  2. Java多线程实现......(1,继承Thread类)

    MyThread.java 中的代码: public class MyThread extends Thread{ private int startPrint,printCount; private ...

  3. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

  4. java多线程技能-使用多线程-继承Thread类

    /* 使用多线程可通过继承Thread类或实现Runnable接口. Thread和Runnable的关系:public class Thread implements Runnable. 使用thr ...

  5. 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法

    第一种:继承thread类,重写run()方法 一般方式:Demo01.java /** * 创建线程的第一种方式:继承thread类,重写run()方法 * * @author :liuqi * @ ...

  6. Java 多线程实现方式一:继承Thread类

    java 通过继承Thread类实现多线程很多简单: 只需要重写run方法即可. 比如我们分三个线程去京东下载三张图片: 1.先写个下载类: 注意导入CommonsIO 包 public class ...

  7. 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口

    //继承thread类 class PrimeThread extends Thread{ long minPrime; PrimeThread(long minPrime) { this.minPr ...

  8. Java通过继承thread类与实现Runnable接口实现多线程的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 一.通过继承T ...

  9. Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别

    1. Java中线程的创建有两种方式:  (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. ...

  10. Java中实现多线程继承Thread类与实现Runnable接口的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中, ...

随机推荐

  1. 希尔伯特变换用于解调系统——以解调调频信号为例,FM Demodulation

    What's The Hilbert Transform 简单地说,希尔伯特变换的物理意义为:把信号的所有频率分量的相位推迟90度,这样原信号和变换后信号可以视为一组IQ正交信号,在数字域正交化,可以 ...

  2. TienChin 活动管理-修改活动接口

    前端 activity.js 直接替换现有的,最求速度了,后面在详细一个个记录,不在过多解释了. import request from '@/utils/request' /** * 查询活动列表 ...

  3. SqlSugar导航查询/多级查询

    1.导航查询特点 作用:主要处理主对象里面有子对象这种层级关系查询 1.1 无外键开箱就用 其它ORM导航查询 需要 各种配置或者外键,而SqlSugar则开箱就用,无外键,只需配置特性和主键就能使用 ...

  4. C/C++ Zlib实现文件压缩与解压

    在软件开发和数据处理中,对数据进行高效的压缩和解压缩是一项重要的任务.这不仅有助于减小数据在网络传输和存储中的占用空间,还能提高系统的性能和响应速度.本文将介绍如何使用 zlib 库进行数据的压缩和解 ...

  5. 聚石塔容器查看tomcat 日志的方法

    通过以上命令可以看出日志的路径,从而得出直接执行的命令:tail -f acs/log/catalina.log

  6. Ubuntu安装typecho博客

    Ubuntu安装typecho博客 简介 名称的来历 Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴. Type,有打字的意思,博客这个东西,正是一个让我们通过打 ...

  7. 二进制安装Kubernetes(k8s) v1.27.1 IPv4/IPv6双栈 可脱离互联网

    二进制安装Kubernetes(k8s) v1.27.1 IPv4/IPv6双栈 可脱离互联网 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star ...

  8. CF1826D Running Miles

    题目链接 题解 知识点:贪心,前缀和,枚举. 首先考虑一个贪心结论,选择区间端点一定是两个最大值,因此 \(i_1 = l,i_3 = r\) . 考虑变形式子 \((b_l + l) + b_{i_ ...

  9. LLaMA 2 - 你所需要的一切资源

    摘录 关于 LLaMA 2 的全部资源,如何去测试.训练并部署它. LLaMA 2 是一个由 Meta 开发的大型语言模型,是 LLaMA 1 的继任者.LLaMA 2 可通过 AWS.Hugging ...

  10. .NET周刊【2月第2期 2024-02-11】

    国内文章 C#/.NET该如何自学入门? https://www.cnblogs.com/Can-daydayup/p/18006914 随着DotNetGuide技术社区交流群的扩大,很多新成员希望 ...