标签:tar ide 参考 log 子类 get soft rri logs
开始学线程的时候总会写一些简单的小程序,例如:4个窗口卖20张票。
当然用Thread实现类和Runnable实现类都能实现,但是两者是有异同的:
前者在开启线程的时候还会新开启一个自身的任务,所以用Thread子类创建的线程,会是各个线程交替去执行自己的任务,而非共同执行一条任务。
后者只会创建一个任务,让多个线程去执行一个任务。
平时一般用Runnable声明线程。
public class SaleTicketsOfRunnable {
public static void main(String[] args) {
Sales s= new Sales();
Thread t1 = new Thread(s,"一口");
Thread t2 = new Thread(s,"二口");
Thread t3 = new Thread(s,"三口");
Thread t4 = new Thread(s,"四口");
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class Sales implements Runnable{
int tickets = 20;
String name;
@Override
public void run() {
while(tickets>0){
System.out.println(Thread.currentThread().getName()+"卖了第【"+this.tickets--+"】张火车票");
}
}
}
public class SaleTicketsOfThread {
public static void main(String[] args) {
new Sale().start();
new Sale().start();
new Sale().start();
new Sale().start();
}
}
class Sale extends Thread{
private int tickets = 20;//不加static则是四个线程分别卖自己的20张票
// private static int tickets = 20;//加了static则是四个线程共同卖20张票
@Override
public void run() {
while(tickets>0){
System.out.println(this.getName()+"卖了第【"+this.tickets--+"】张火车票");
}
}
}
综上可以看出,Thread继承类创建的对象不能同步;Runnable继承类创建的Thread对象,对象是共享的,可以实现同步。
参考:
http://mars914.iteye.com/blog/1508429
http://www.cnblogs.com/snowdrop/archive/2010/08/04/1791827.html
标签:tar ide 参考 log 子类 get soft rri logs
原文地址:http://www.cnblogs.com/xijie/p/6770045.html