公司不能登录,很久不发博客,今天偶然看到多线程,发现自己同步用的不好,简单写个例子用synchronized 关键字的例子,100张票 3个窗口同时销售。另外加锁也可以用Lock 接口的实现类,此处不做拓展,可参考Java核心 基础卷
直接上代码。
package com.learning.test;
public class TestMutithread {
public static void main(String[] args) {
Ticket ticket = new Ticket();
ticket.number = 100;
TicketBll ticketBll = new TicketBll(ticket);
SellTicketRunnable sellTicketRunnable = new SellTicketRunnable(
ticketBll);
new Thread(sellTicketRunnable, "A").start();
new Thread(sellTicketRunnable, "B").start();
new Thread(sellTicketRunnable, "C").start();
new Thread(sellTicketRunnable, "D").start();
}
}
class Ticket {
public int number;
}
class TicketBll {
public Ticket ticket;
public TicketBll(Ticket ticket) {
this.ticket = ticket;
}
public void sellTicket() {
while (ticket.number > 0) {
synchronized (ticket) {
System.out.println(Thread.currentThread().getName() + " sells "
+ ticket.number--);
}
try {
Thread.sleep(100l);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class SellTicketRunnable implements Runnable {
private TicketBll ticketBll;
public SellTicketRunnable(TicketBll ticketBll) {
this.ticketBll = ticketBll;
}
@Override
public void run() {
ticketBll.sellTicket();
}
}
分享到:
相关推荐
介绍多线程同步的基础知识 首先我要提一点,关于线程的基础知识,一个程序,即一个进程,可以有很多个线程,当然,至少要有一个线程,即主线程.相信大家都知道多线程的好处吧,举个书上的例子 吧,Windows在复制文件的时候,有...
三、还有一种用信号量对象来管理线程同步的,它是在互斥的基础上建立的,但信号量增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。有点复杂,想不到在哪可以用,现在就不研究论了。 unit Tst_...
多线程买票是java中的一个经典案例,其主要思想无非包括2点,synchronized和锁,两者中,前者实现同步,后者为同步的线程提供锁,从而实现多个线程共享同一份资源时候,能够同步进行; 经典的方式是synchronized + 锁...
单线程是排队执行,也就是同步,人一般都是单线程操作,起床、上厕所、刷牙、吃饭、上班,多线程的例子比如火车站,同时有多两火车进站和出站,它是异步,很难想象要是火车站是单线程的是个什么样的场景。...
三、还有一种用信号量对象来管理线程同步的,它是在互斥的基础上建立的,但信号量增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。有点复杂,想不到在哪可以用,现在就不研究论了。 发表于 @ 2008...
使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号灯...
使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号...
使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号灯...
3.2 线程同步 3.3 设计自己的线程局部存储 3.4 设计线程类——CWinThread 3.5 【实例】多线程文件搜索器 第4章 Windows图形界面 4.1 了解窗口 4.2 第一个窗口程序 . 4.3 一个...
11.2.3 实例:通过创建多线程来编写网络聊天程序 11.3 MFC 的线程处理 11.3.1 创建工作者线程 11.3.2 创建用户界面线程 11.4 线程同步 11.4.1 为什么要同步 11.4.2 等待函数 11.4.3 同步对象 11.4.3.1 关键...
演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...
演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology 文档。 P2P视频技术源码(含开发文档) 目前的协议有如下一些特点: 1) 客户向服务器发送请求, 每个请求的长度不定. 请求...
演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...
演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...
演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...
演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...
QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...
对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...
建立一个应用程序 ................................................................................................................................ 17 应用程序的关闭 .......................................
QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...