JDK8.0之前,Java创建多线程的方式为两种
- 使用继承Thread类的对象创建多线程
- 使用实现Runnable接口类的对象创建多线程
这两种方法各有各的好处,直接继承于Thread类的对象创建线程方便;而是用实现Runnable接口的对象在创建多线程时则更快,切不占用珍贵的父类资源。个人更偏向于用Runnable接口对象创建多线程。
下面是使用继承Thread类的对象创建多线程完成窗口售票问题的代码
class Windows extends Thread{
private static int tickets = 100;
private String windowsName;
Windows(String windowsName){
this.windowsName = windowsName;
}
@Override
public void run() {
while (tickets > 0){
System.out.println(windowsName + "卖出一张票,剩余票数"+--tickets);
}
}
}
public class ThreadTest {
public static void main(String[] args) {
//用继承Thread类去做窗口卖票
Windows w1 = new Windows("窗口一");
Windows w2 = new Windows("窗口二");
Windows w3 = new Windows("窗口三");
Windows w4 = new Windows("窗口四");
w1.start();
w2.start();
w3.start();
w4.start();
}
下面是使用实现Runnable接口类的对象创建多线程完成窗口售票问题的代码
class Windows2 implements Runnable{
private int tickets = 100;
@Override
public void run() {
while (tickets > 0){
System.out.println(Thread.currentThread().getName() + "卖出一张票,剩余票数:"+ --tickets);
}
}
}
public class ThreadTest {
public static void main(String[] args) {
//用实现Runnable接口去做窗口售票
Windows2 w1 = new Windows2();
Thread t1 = new Thread(w1);
t1.setName("窗口一");
Thread t2 = new Thread(w1);
t2.setName("窗口二");
Thread t3 = new Thread(w1);
t3.setName("窗口三");
t1.start();
t2.start();
t3.start();
}
THE END