引言:
java中用Thread类和实现Runnable接口的方式都可以创建线程,但实现Runnable接口的方式更适合用来处理多个线程有共享数据的情况。
创建三个窗口卖票,总票数为100张
使用继承Thread类的方式
存在线程的安全问题,待解决。
class Window extends Thread {
private static int ticket = 100;//通过static关键字实现数据共享
@Override
public void run() {
while (true) {
if (ticket > 0) {
System.out.println(getName() + ":买票,票号为:" + ticket);
ticket--;
} else {
break;
}
}
}
}
public class WindowTest {
public static void main(String[] agrs) {
Window t1 = new Window();
Window t2 = new Window();
Window t3 = new Window();
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
使用实现Runnable接口的方式
存在线程的安全问题,待解决。
class Window1 implements Runnable {
private int ticket = 100;
@Override
public void run() {
while (true) {
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + ":卖票,票号为:" + ticket);
ticket--;
} else {
break;
}
}
}
}
public class WindowTest1 {
public static void main(String[] args) {
Window w = new Window();
Thread t1 = new Thread(w);//共享同一个Window
Thread t2 = new Thread(w);//共享同一个Window
Thread t3 = new Thread(w);//共享同一个Window
t1.setName("窗口一");
t2.setName("窗口二");
t3.setName("窗口三");
t1.start();
t2.start();
t3.start();
}
}