1.创建多线程类继承Runnable
package test3;
public class TicketThread implements Runnable{
int ticket = 100;
Object obj = new Object();
public void run() {
//method(); //method是实现了同步方法,可以解决火车票出现的问题,
while(true) {
synchronized (obj) { //也可以在run()里面采用同步代码块的形式,来解决出现的异常
if(ticket>0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+”:”+ticket–);
}
}
}
}
private synchronized void method() {
while(true) {
if(ticket>0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+":"+ticket--);
}
}
}
}
2.实现多线程
package test3;
public class TicketThreadDemo {
public static void main(String[] args) {
TicketThread tr = new TicketThread();
Thread t = new Thread(tr);
t.setName("窗口一");
Thread t2 = new Thread(tr);
t2.setName("窗口二");
Thread t3 = new Thread(tr);
t3.setName("窗口三");
t.start();
t2.start();
t3.start();
}
}