线程的方法:
1、继承Thread
2、实现Runnable接口
public class Demo04 extends Thread{
//
private int ticket=10;
@Override
public void run() {
super.run();
while(true) {
if(ticket<=0) {
break;
}
System.out.println("线程:"+Thread.currentThread().getName()
+"剩余的票"+ticket--);
}
}
public static void main(String[] args) {
//创建线程---三个售票窗口
Demo04 obj1=new Demo04();
Demo04 obj2=new Demo04();
Demo04 obj3=new Demo04();
Thread thread1=new Thread(obj1,"窗口1");
Thread thread2=new Thread(obj2,"窗口2");
Thread thread3=new Thread(obj3,"窗口3");
thread1.start();
thread2.start();
thread3.start();
}
}
public class Demo05 implements Runnable {
private int ticket=10;
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
if(ticket<=0) {
break;
}try {
Thread.sleep(100);//休眠
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程:"+Thread.currentThread().getName()
+"剩余的票"+ticket--);
}
}
public static void main(String[] args) {
Demo05 obj=new Demo05();
Thread t1=new Thread(obj,"窗口1");
Thread t2=new Thread(obj,"窗口2");
Thread t3=new Thread(obj,"窗口3");
t1.start();
t2.start();
t3.start();
}
}
设置对象,使进程中不会出现多个窗口卖出票后,后台只会改变1张票的情况(具体我也不是很清楚,等我懂了再来写)
public class Demo06 extends Thread{
//
private int ticket=20;
@Override
public void run() {
super.run();
while(true) {
synchronized (this) {//对象锁
if(ticket<=0) {
break;
}
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("线程:"+Thread.currentThread().getName()
+"剩余的票"+ticket--);
}
}
}
public static void main(String[] args) {
//目标线程
Thread obj=new Demo06();
for(int i=0;i<3;i++) {
new Thread(obj).start();
}
}
}