Java多线程--售票代码
来源:互联网 发布:小额借钱软件排名 编辑:程序博客网 时间:2024/05/17 07:37
使用继承自Thread类的子类:
同步块:
/** * 继承Thread类的售票类 * * @author XINY * */class TicketT extends Thread {// 票数,起始数量为100private static int tick = 100;//随便写的一个对象,如没特殊要求可随便实例化一个对象,用于同步块中传入的值。//为保证每个线程的锁一致,必需让obj为静态变量static Object obj = new Object();@Overridepublic void run() {// TODO Auto-generated method stubwhile (tick > 0) {//obj对象无特殊要求,任何对象均可,但是必需保证每个线程传入的对象是同一个对象synchronized (obj) {if (tick > 0) {try {// 休眠10毫秒sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 出票System.out.println(Thread.currentThread().getName()+ "----" + tick--);}}}}}/** * 主类 * * @author XINY * */public class TicketThread {public static void main(String[] args) {// 创建售票线程TicketT t1 = new TicketT();TicketT t2 = new TicketT();TicketT t3 = new TicketT();TicketT t4 = new TicketT();// 开始线程t1.start();t2.start();t3.start();t4.start();}}
同步方法:
/** * 继承Thread类的售票类 * * @author XINY * */class TicketT extends Thread {// 票数,起始数量为100private static int tick = 100;@Overridepublic void run() {// TODO Auto-generated method stubwhile (tick > 0) {sale();}}/** * 同步方法 * 为保证锁相同,将sale方法定义为static */public static synchronized void sale(){if (tick>0) {try {// 休眠10毫秒sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 出票System.out.println(Thread.currentThread().getName()+ "----" + tick--);}}}/** * 主类 * * @author XINY * */public class TicketThread {public static void main(String[] args) {// 创建售票线程TicketT t1 = new TicketT();TicketT t2 = new TicketT();TicketT t3 = new TicketT();TicketT t4 = new TicketT();// 开始线程t1.start();t2.start();t3.start();t4.start();}}
使用实现Runnable接口的子类:
同步块:
/** * 实现Runnable接口的类 * * @author XINY * */class TicketR implements Runnable {// 初始票数100private int tick = 100;Object obj=new Object();@Overridepublic void run() {// TODO Auto-generated method stubwhile (tick > 0) {//new Object() 是我随便写的,这里需要传入一个对象synchronized (obj) {if (tick > 0) {try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 出票System.out.println(Thread.currentThread().getName()+ "----" + tick--);}}}}}/** * 主类 * * @author XINY * */public class TicketRunnable {public static void main(String[] args) {// TODO Auto-generated method stubTicketR t = new TicketR();Thread t1 = new Thread(t);Thread t2 = new Thread(t);Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();t2.start();t3.start();t4.start();}}
同步方法:
/** * 实现Runnable接口的类 * * @author XINY * */class TicketR implements Runnable {// 初始票数100private int tick = 100;@Overridepublic void run() {// TODO Auto-generated method stubwhile (tick > 0) {sale();}}public synchronized void sale() {if (tick > 0) {try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 出票System.out.println(Thread.currentThread().getName() + "----"+ tick--);}}}/** * 主类 * * @author XINY * */public class TicketRunnable {public static void main(String[] args) {// TODO Auto-generated method stubTicketR t = new TicketR();Thread t1 = new Thread(t);Thread t2 = new Thread(t);Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();t2.start();t3.start();t4.start();}}
0 0
- Java多线程--售票代码
- JAVA多线程售票问题
- Java多线程售票问题
- JAVA多线程售票问题
- java多线程实现售票
- JAVA多线程售票问题
- java多线程实现售票
- java多线程售票实现
- java多线程模拟售票
- Java-多线程实现售票
- Java多线程demo:售票
- java 多线程火车票售票实例
- Java多线程编程,模拟售票
- java 多线程模拟售票系统
- java多线程售票小例子
- 代码分享:模拟售票 学习多线程
- 多线程售票同步代码段(二)
- 多线程售票
- PAT (Basic Level) Practise (中文)1023. 组个最小数 (20)C语言
- Visual C++ 在windows 7 上预编译头错误unexpected precompiled header error, simply rerunning the compiler migh
- 关于 overridePendingTransition()使用
- Hibernate中 对象 的三种状态
- 【转】如何坚持每周写一篇博客
- Java多线程--售票代码
- android 点击listview 展开和闭合 效果
- object-c 属性列表上的各个常用属性值及其含义
- 搜狗输入法表情
- [错误] scp 时 ssh Connection refused
- 未能加载文件或程序集“MySql.Web.v20, Version=6.9.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”或它的某一个依
- Set Matrix Zeroes
- 包装类简介
- DirectX11 常量缓存