线程一-------经典案例买票

/*
 * extends THread也可以  不过都是使用下列方法
 */
public class MyThread implements Runnable {
	 private int ticket = 5;  //5张票

	    public void run() {
	        for (int i=0; i<=20; i++) {
	            if (this.ticket > 0) {
//						Thread.sleep(3000);//休眠3秒
	            	//得到线程的名字
						System.out.println(Thread.currentThread().getName()+ "正在卖票      "+this.ticket--);
	            }
	        }
	    }

	    @SuppressWarnings("static-access")
		public static void main(String [] args) throws Exception {
	       MyThread my = new MyThread();
	       Thread t = new Thread(my, "1号窗口");
	       //线程是否开启
	       System.out.println(t.isAlive()+" 线程");
//	       Thread.sleep(3000);
	       t.start();
	       t.yield();
	       System.out.println(t.isAlive()+" 线程");

	        new Thread(my, "2号窗口").start();
	        new Thread(my, "3号窗口").start();
	    }
}

时间: 2024-11-10 14:58:07

线程一-------经典案例买票的相关文章

多线程十大经典案例之一 双线程读写队列数据

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多线程第四篇一个经典的多线程同步问题>及解决多线程同步互斥的常用方法

秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多

多线程面试题系列(16):多线程十大经典案例之一 双线程读写队列数据

前十五篇中介绍多线程的相关概念,多线程同步互斥问题(第四篇)及解决多线程同步互斥的常用方法--关键段.事件.互斥量.信号量.读写锁.为了让大家更加熟练运用多线程,将会有十篇文章来讲解十个多线程使用案例,相信看完这十篇后会让你能更加游刃有余的使用多线程. 首先来看第一篇--第十六篇 多线程十大经典案例之一 双线程读写队列数据 <多线程十大经典案例之一双线程读写队列数据>案例描述: MFC对话框中一个按钮的响应函数实现两个功能:显示数据同时处理数据,因此开两个线程,一个线程显示数据(开了一个定时器

线程模拟买票

存在问题:这时候启动了四个线程,那么tickets是一个成员变量,也就是在一个线程对象中都维护了属于自己的tickets属性,那么就总共存在了四份. 解决方案一:tickets使用staitc修饰,使每个线程对象都是共享一份属性. 1.1 创建线程的方式二 创建线程的第二种方式.使用Runnable接口. 该类中的代码就是对线程要执行的任务的定义. 1:定义了实现Runnable接口 2:重写Runnable接口中的run方法,就是将线程运行的代码放入在run方法中 3:通过Thread类建立线

买票问题-线程的同步

1 //买票问题 2 package ThreadL; 3 4 public class Thread9 { 5 public static void main(String[] args){ 6 Thread th1 = new Thread(new Thread9L(),"AAA"); 7 Thread th2 = new Thread(new Thread9L(),"BBBBBB"); 8 th1.start(); 9 th2.start(); 10 } 11

java多线程经典案例

/** * 典型案例:子线程执行10次,主线程执行100次,两者交替50次. */ package cn.itcast.lesson4; public class TestWaitNotify { public static void main(String[] args){ final Business business= new Business(); new Thread( new Runnable() { public void run() { for(int i=1;i<=50;i++

【小白的java成长系列】——多线程初识(多人买票问题)

本来这节内容是要到后面来说的,因为最近在弄并发的问题,推荐一本书<java并发编程实战>,深入的讲解了多线程问题的.本人最近也刚好在看这本书,还不错的~ 多线程的相关概念,就不用说了的,自己可以去网上查找,有一大堆关于它的讲解~ 先来看看买票的程序: package me.javen.thread.one; public class TicketDemo { public static void main(String[] args) { // 使用Thread类的方式 // TicketTh

NSThread 买票

创建2个线程买票,涉及到临界资源保护. 创建线程代码如下: ticketsThreadone = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [ticketsThreadone setName:@"Thread-1"]; [ticketsThreadone start]; 注意:线程的函数 run跑完后,这个线程就结束了,因此买票的函数应该是个死循环,才能实现多次买票 代码: #i

多线程经典案例

售票服务 public class Station extends Thread { // 通过构造方法给线程名字赋值 public Station(String name) { super(name);// 给线程名字赋值 } // 为了保持票数的一致,票数要静态 static int tick = 20; // 创建一个静态钥匙 static Object ob = new Object();//值是任意的 // 重写run方法,实现买票操作 @Override public void ru