java实现多线程(车站卖票)】的更多相关文章

这一节我们来说一个示例就是卖票示例: 需求: 我们现在有100张票,然后分四个窗口来卖,直到卖完为止. 思路: 1.先定一个一个票类,描述票的属性,还有打印卖出的票,并且实现Runnable中的run方法. 2.定义一个主方法,把这个类当成一个独立的运行程序. 3.在主方法当中创建4个线程来卖票. 代码: class Ticket implements Runnable { ; public void sellT() { while(true) { ) System.out.println(nu…
/** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * 存在线程的安全问题,待解决. */class Window1 implements Runnable{ private int ticket = 100; @Override public void run() { while(true){ if(ticket > 0){ System.out.println(Thread.currentThread().getName() + ":卖票,票号为:…
/** * * 例子:创建三个窗口卖票,总票数为100张.使用继承Thread类的方式 * * 存在线程的安全问题,待解决. * */class Window extends Thread{ private static int ticket = 100; @Override public void run() { while(true){ if(ticket > 0){ System.out.println(getName() + ":卖票,票号为:" + ticket); t…
package shb.java.demo; /** * 多线程测试卖票小程序. * @Package:shb.java.demo * @Description: * @author shaobn * @Date 2015-9-2下午7:49:53 */ public class TestSyn { public static void main(String[] args) { //此注释为实现方式一 /*TicketDemo td = new TicketDemo(); Thread t1…
1.通过extends Thread /* 需求:简单的卖票,多个窗口同时买票 (共用资源) 创建线程的第二种方式:实现Runnable接口 步骤: 1,定义类实现Runnable接口 2,覆盖/重写Runnable接口中的run方法 将将线程要运行的代码存放在该run方法中 3,通过Thread类建立线程对象 4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数 为什么要将Runnable接口的子类对象传递给Thread的构造参数呢? 答:自定义的run方法(自定义代…
import java.util.ArrayList; import java.util.List; public class 多线程 { // public static int j=0; public static long a=0; public static void main(String[] args) throws InterruptedException { List<Thread> list = new ArrayList<Thread>(); System.ou…
* 如何解决线程安全问题呢? *  * 要想解决问题,就要知道哪些原因会导致出问题:(而且这些原因也是以后我们判断一个程序是否会有线程安全问题的标准) * A:是否是多线程环境 * B:是否有共享数据 * C:是否有多条语句操作共享数据 *  * 我们来回想一下我们的程序有没有上面的问题呢? * A:是否是多线程环境 是 * B:是否有共享数据 是 * C:是否有多条语句操作共享数据 是 *  * 由此可见我们的程序出现问题是正常的,因为它满足出问题的条件. * 接下来才是我们要想想如何解决问题…
通过加入延迟后,就产生了连个问题: * A:相同的票卖了多次 *   CPU的一次操作必须是原子性的 * B:出现了负数票 *   随机性和延迟导致的 public class SellTicketDemo { public static void main(String[] args) { // 创建资源对象 SellTicket st = new SellTicket(); // 创建三个线程对象 Thread t1 = new Thread(st, "窗口1"); Thread…
线程同步方法: (1).同步代码块,格式: synchronized (同步对象){ //同步代码 } (2).同步方法,格式: 在方法前加synchronized修饰 问题: 多个人同时买票. 1.资源没有同步. package thread; public class Tickets implements Runnable { private int count = 5; @Override public void run() { for (int i = 0; i < 10; ++i) {…
Java中多线程的使用(超级超级详细)线程安全 4 什么是线程安全? 有多个线程在同时运行,这些线程可能会运行相同的代码,程序运行的每次结果和单线程运行的结果是一样的,而且其他变量的值也和预期的值一样,这就是线程安全 我们下面来用一段代码来演示线程不安全的情况,下面用车站卖票来举例 package ThreadSafe; public class Main { public static void main(String[] args) { //使用同一个对象 ThreadSafe thread…