package com.sqf.thread;
//需求: 模拟3个窗口同时在售50张 票 。
public class SaleTicket1 implements Runnable{
int num = 50; //此种方法不是静态 注意思路
@Override
public void run() {
while(true){
//System.out.println(this); 这两个输出不同的原因,this代表当前的对象为SaleTicket1
//System.out.println(Thread.currentThread().getName());
synchronized ("锁") {
if(num>0){
System.out.println(Thread.currentThread().getName()+"售出了第"+ num+"号票");
num--;
}else{
System.out.println("售罄了..");
break;
}
}
}
}
public static void main(String[] args) {
//创建了一个Runnable实现类的对象
SaleTicket1 saleticket = new SaleTicket1();
//创建三个线程对象模拟三个窗口
Thread thread1 = new Thread(saleticket,"窗口1"); //Thread类使用Target变量记录了saleticket对象,
Thread thread2 = new Thread(saleticket,"窗口2");
Thread thread3 = new Thread(saleticket,"窗口3");
thread1.start();
thread2.start();
thread3.start();
/*
Thread类 的run方法
@Override
public void run() {
if (target != null) {
target.run(); //就相当于Runnable实现类的对象的run方法作为了Thread对象的任务代码了。
}
}
*/
}
}
线程创建的两种方式02--Java基础068
最新推荐文章于 2021-02-12 11:00:41 发布