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. 开源IM项目OpenIM单聊及万人群压测报告

    单聊压测结论: 华为云主机s3一台:8核16G内存,网络带宽10Mb,普通磁盘(非SSD) 同时在线及压测客户端数量:1万 每秒钟发送消息量:2300条: 从发送到对方接收平均消息延时:5秒 群聊压测 ...

  2. ASP.NET MVC 通过ActionFilter获取请求的参数

    using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...

  3. 缩小ios的包体

    不选全部兼容设备 在xcode中导出ipa时,不勾选导出全部兼容性设备,这样导出的ipa包含两种架构:armv7和64 打包压缩 unity提供三种压缩模式可以选择,默认选择的是:default不压缩 ...

  4. SqlSugar删除数据

    1.根据实体删除 1.1 强类型实体 需要配置主键 ,根据主键删除需要给实体配置主键,参考文档实体配置 //单个实体 db.Deleteable<Student>(new Student( ...

  5. 8.1 Windows驱动开发:内核文件读写系列函数

    在应用层下的文件操作只需要调用微软应用层下的API函数及C库标准函数即可,而如果在内核中读写文件则应用层的API显然是无法被使用的,内核层需要使用内核专有API,某些应用层下的API只需要增加Zw开头 ...

  6. Linux 配置Quota磁盘配额

    由于Linux是一个多用户管理的操作系统,而Linux默认情况下并不限制每个用户使用磁盘空间的大小,假如某个用户疏忽或者恶意占满磁盘空间,将导致系统磁盘无法写入甚至崩溃,为了保证系统磁盘的有足够的剩余 ...

  7. 最新力作,爱来自rand函数

    AWCU47EF;D5F]ET[a8a9K6G5IRHB6RS\cD8YDC:AGN<Z@6ZI3ab8D3O3La7:Sc;5_B]BS5S6Q]baWGcTE94IX7cW=9F>BJ ...

  8. Java-生成字符串的MD5值

    方法一:public static String getMd5(String str) { MessageDigest md5 = null; try { md5 = MessageDigest.ge ...

  9. 【.NET】聊聊 IChangeToken 接口

    由于两个月的奋战,导致很久没更新了.就是上回老周说的那个产线和机械手搬货的项目,好不容易等到工厂放假了,我就偷偷乐了.当然也过年了,老周先给大伙伴们拜年了,P话不多讲,就祝大家身体健康.生活愉快.其实 ...

  10. 吉特日化MES & 某配料自动化项目业务架构图

    作者:情缘   出处:http://www.cnblogs.com/qingyuan/ 关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路 版权声明:本文版权归作者和博客园 ...