一般来说建立新线程有两种方法:继承Thread类或者实现Runnable接口。那么这两种实现方式各有什么优缺点呢?
1.Runnable方式可以避免采用Thread方式由于Java单继承特性带来的缺陷。如果继承了Thread类,就不能再继承别的类了,而接口是可以实现多个的。
2.Runnable的代码可以被多个线程共享,可以多个线程处理同一资源。
下面是模拟火车站卖票的例子:
class MyRunnable implements Runnable {
private int ticketCount = 7; //剩余票数
@Override
public void run() {
while(ticketCount > 0) {
ticketCount--;
System.out.println(Thread.currentThread().getName() + "卖出一张票,剩余" + ticketCount + "张");
}
}
}
public class Main {
public static void main(String[] args) {
System.out.println("111");
MyRunnable mr = new MyRunnable();
Thread mt1 = new Thread(mr);
Thread mt2 = new Thread(mr);
Thread mt3 = new Thread(mr);
mt1.start();
mt2.start();
mt3.start();
}
}