假设有100张火车票,有三个窗口可以卖票,如何使用多线程实现三个窗口抢票?
对于单个窗口,我们会写一个简单的循环语句:
对于单个窗口,我们会写一个简单的循环语句:
public class Ticket {
int tick = 100;
public void sale() {
while(true) {
if (tick > 0) {
System.out.println("剩余车票: 售出车票号码为:" + tick--);
}else {
break;
}
}
}
public static void main(String[] args) {
Ticket ticket = new Ticket();
ticket.sale();
}
}
如果是三个窗口同时开展售票业务,就要使用多线程解决这个问题了。Java实现多线程的步骤如下:
- 定义接口实现类,实现Runnable接口。
- 重写Runnable接口中的run方法。
- 通过Thread类含参构造器创建线程对象。
- 将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。
- 调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法
class Sale implements Runnable{
//定义接口实现类,实现Runnable接口
@Override
public void run() {
//子类中重写Runnable接口中的run方法。
System.out.println("多线程执行语句blablabla");
}
public static void main(String[] args){
//通过Thread类含参构造器创建线程对象。
//将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。
//调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法
new Thread(new Sale()).start();
new Thread(new Sale()).start();
new Thread(new Sale()).start();
}
}
-------------------------
多线程执行语句blablabla
多线程执行语句blablabla
多线程执行语句blablabla
我们可以给三个线程命名,并且在显示的时候输出它们的名字:
class Sale implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"多线程执行语句blablabla");
}
public static void main(String[] args){
new Thread(new Sale(),"1号窗口").start();
new Thread(new Sale(),"2号窗口").start();
new Thread(new Sale(),"3号窗口").start();
}
}
-------------------------
2号窗口多线程执行语句blablabla
1号窗口多线程执行语句blablabla
3号窗口多线程执行语句blablabla
然后将前面写好的语句,放到Sale类里,就是下面这样,运行:
package indi.huishi.method;
class Sale implements Runnable{
int tick = 100;
@Override
public void run() {
// System.out.println(Thread.currentThread().getName()+"多线程执行语句blablabla");
while(true