单继承具有局限性,推荐使用Runnable接口,启动线程必须借用Thread类对象new Thread(Run,String s).start() ,new Thread()可以传字符串Thread.currentThread().getName();当前线程的名字,即传入的字符串重写的run()方法没有返回值,且不能抛出异常Thread.sleep(200);暂停该线程200毫秒延迟,1000毫秒约等于一秒

模拟抢票:

public class ThreadDownload implements Runnable {private int num=99;public void run(){ while(true) { if(num<0) { break; } try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //模拟延迟,停止200毫秒 System.out.println(Thread.currentThread().getName()+"-"+num--); }}public static void main(String[]args){ //一份资源 ThreadDownload web=new ThreadDownload(); System.out.println(Thread.currentThread().getName());//在main线程中,打印main //多个代理 new Thread(web,"a").start(); new Thread(web,"b").start(); new Thread(web,"c").start();}}

模拟龟兔赛跑:

public class ThreadDownload implements Runnable {private String winner;public void run(){ for(int step=1;step<=100;step++) { if(Thread.currentThread().getName().equals("兔子")&&step%10==0) { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(Thread.currentThread().getName()+"-->"+step); boolean flag=gameOver(step); if(flag) { break; } }}private boolean gameOver(int step){ if(winner!=null) { return true; }else { if(step==100) { winner=Thread.currentThread().getName(); System.out.println("winner=="+winner); return true; } } return false;}public static void main(String[]args){ //一份资源 ThreadDownload td=new ThreadDownload(); new Thread(td,"乌龟").start(); new Thread(td,"兔子").start();}}