继承Tread来实现多线程的话,写出的类就是Thread的一个子类,所以用这个自定义类产生的对象就是一个线程;而通过实现Runnable实现类来实现多线程,还要声明一个Thread类的对象,将这个Runnable实现类的对象传入Thread类的一个构造函数来声明一个Thread对象,这个对象才是一个真正的线程对象,而且可以通过将同一个Runnable实现类的对象传入Thread构造器来实现多进程共享。
代码实现:
package threadDemo; public class Tickets_Sale { public static void main(String[]args){ Sell sell=new Sell(); new Thread(sell,"窗口一").start(); new Thread(sell,"窗口二").start(); new Thread(sell,"窗口三").start(); new Thread(sell,"窗口四").start(); } } class Sell implements Runnable{ private int tickets_amount=100; public synchronized void sellTicket(){ tickets_amount--; if(tickets_amount>0){ System.out.println(Thread.currentThread().getName()+"卖出一张,余票有"+tickets_amount+"张"); System.out.println("正在出票"); try { Thread.sleep(500); System.out.println("出票成功"); } catch (InterruptedException e) { System.out.println("线程睡眠异常"); e.printStackTrace(); } } } @Override public void run() { while(true){ if(tickets_amount>0){ sellTicket(); }else if(tickets_amount<=0){ System.out.println("票卖完了"); return; }else{ System.out.println("系统错误"); return; } } } }
时间: 2024-12-28 01:13:55