/*java里面实现多线程一般有两种方式 * 1,继承Thread类,实现run方法 * 2,实现Runnable接口,实现run方法 * start方法可以新建一个线程,创建多线程必须调用此方法 * run方法用于存放要多线程要运行的代码 * */ public class ThreadDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub TicketT t1=new TicketT(); TicketT t2=new TicketT(); TicketT t3=new TicketT(); TicketT t4=new TicketT(); t1.start();//新建线程1 t2.start();//线程2 t3.start();//线程3 t4.start();//线程4 TickR r1=new TickR(); Thread t5=new Thread(r1);//将实现runable接口的类作为参数传递 t5.start();//新建线程,start中调用的是参数r1的run方法 } } /**继承Thread类,实现run方法,调用start()创建线程 * @author Changshuo */ class TicketT extends Thread { private static int tick=100; @Override public void run() { while (true) { if (tick>0) { System.out.println(Thread.currentThread().getName()+"....卖:"+tick--); } } } } /** * 1,实现Runnable接口, * 2,实现接口的run方法,将线程要运行的方法存放在run方法中 * 3,建立Thread类的线程对象,把接口的子类对象传递给Thread的构造函数 * 4,调用Thread类的start()开启线程,并调用Runnable的run方法 * @author Changshuo * */ class TickR implements Runnable { private int tick=100; @Override public void run() { while (true) { if (tick>0) { System.out.println(Thread.currentThread().getName()+"....卖:"+tick--); } } } }