博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[javaSE] 多线程(售票例子)
阅读量:7156 次
发布时间:2019-06-29

本文共 1095 字,大约阅读时间需要 3 分钟。

需求:简单的买票程序,多个窗口卖票,多线程

 

定义一个类Ticket实现Runnable接口,

定义成员属性int类型的票数nums

实现run()方法,run方法中

while(true)的死循环,打印nums--

 

获取Ticket对象,new出来

获取Thread()对象,new出来,构造参数:Runable对象

调用Thread对象的start()方法,开启线程

 

此时会有线程安全问题,使用synchronized同步代码块解决安全问题

 

避免死锁问题,同步中嵌套同步,而锁不同

class Ticket implements Runnable {    private int nums = 100;    @Override    public void run() {        while (true) {            synchronized (this) {                if (nums > 0) {                    try {                        Thread.sleep(10);                    } catch (Exception e) {                        e.printStackTrace();                    }                    System.out.println(Thread.currentThread().getName() + "==="                            + (nums--));                }else{                    break;                }            }        }    }}public class TicketDemo {    /**     * @param args     */    public static void main(String[] args) {        Ticket ticket = new Ticket();        new Thread(ticket).start();        new Thread(ticket).start();        new Thread(ticket).start();        new Thread(ticket).start();    }}

 

转载地址:http://miegl.baihongyu.com/

你可能感兴趣的文章
登陆超时
查看>>
关于VLAN access-map 和Vlan filter
查看>>
WordPress IP验证不当的解决办法及感慨
查看>>
三个引用传递
查看>>
hive的函数UDF
查看>>
Oracle9i RMAN 备份及恢复步骤
查看>>
我的友情链接
查看>>
【storm集群】storm 工作目录不停生成hs_err_pidXXX.log
查看>>
MySQL主从复制的原理及实现过程(mysql-5.5的同步、半步复制过程)
查看>>
C/C++中堆和栈的区别--李家凯老师
查看>>
PopupWindow的使用
查看>>
一次观察NETGEAR的log引起的小排查
查看>>
浅谈软件自动化集成测试流程
查看>>
我的友情链接
查看>>
PHP关于数据的舍入归类:round、ceil、floor、number_format
查看>>
android内核剖析系列---JNI调用机制分析
查看>>
UA2015年第二学期的目标
查看>>
DELL R730 Raid配置
查看>>
jdk1.8 lambda表达式过滤重复的对象
查看>>
vmware测试环境虚拟机模板
查看>>