通过继承Thread实现多继承
通过实现Runnable接口实现多线程
package 多线程;
class Thread_Cell_Ticket extends Thread
{
private int tickets = 0;
public void run()
{
tickets++;
if(tickets<=10)
{
System.out.println(Thread.currentThread().getName()+"出售了第"+tickets+"张票");
this.run();
}
}
}
public class Cell_Ticket_01 {
public static void main(String[] args) {
Thread_Cell_Ticket tct1 = new Thread_Cell_Ticket();
tct1.start();
Thread_Cell_Ticket tct2 = new Thread_Cell_Ticket();
tct2.start();
Thread_Cell_Ticket tct3 = new Thread_Cell_Ticket();
tct3.start();
// tct.start();//一个线程只能启动一次
}
}

//通过实现Runnable接口实现多线程
package 多线程;
class Runnable_Cell_Ticket implements Runnable
{
private int tickets = 0;
public void run()
{
tickets++;
if(tickets<=10)
{
System.out.println(Thread.currentThread().getName()+"出售了第"+tickets+"张票");
this.run();
}
}
}
public class Cell_Ticket_02 {
public static void main(String[] args) {
Runnable_Cell_Ticket t = new Runnable_Cell_Ticket();
Thread thread1 = new Thread(t);
thread1.setName("售票窗口1");//若不给线程取名字,那么系统会自动给它取名字
thread1.start();
Thread thread2 = new Thread(t);
thread2.setName("售票窗口2");
thread2.start();
Thread thread3 = new Thread(t);
thread3.setName("售票窗口3");
System.out.println("启动线程"+thread3.getName()+"之前,thread3.isAlive="+thread3.isAlive());
thread3.start();
System.out.println("启动线程"+thread3.getName()+"之后,thread3.isAlive="+thread3.isAlive());
}
}
