java源码展示:
兔子线程:RabbitThread.java
package thread; /** * 兔子的线程 * @author superdrew */ public class RabbitRunnable implements Runnable{ public void run() { while(true){ System.out.println("兔子领先了....加油!!!!"+ Thread.currentThread().getName()+" "+Thread.currentThread().getPriority()); } } }
乌龟线程:TortoiseThread.java
package thread; import java.util.Scanner; public class TortoiseThread extends Thread{ private String name; public TortoiseThread(){} //传值给父类的Thread的构造方法 public TortoiseThread(String name){ super(name); } public void run() { while(true){ Scanner sc = new Scanner(System.in); System.out.println("乌龟领先了。。。加油。。。。。。"+getName() +" "+getPriority()); } } }
测试线程:TestThread_main.java
package thread; /** * 功能:龟兔赛跑 * 使用线程 * @author superdrew * * 灵活实现多线程 * 此时有几个线程? 3个 main 乌龟线程 兔子线程 * 如何给线程取名字 实现了接口的 Thread.setName * 继承Thread 第一种 setName() 父类的 * 第二种 通过构造方法将值传递给父类Thread * * 常用的方法:run() start() Thread.currentThread() getName() * setName() getPriority() setPriority() * * 所有的人来参加赛跑比赛 ,使用线程 那么 写100个线程? * 新建一个选手的线程 * 1.选手名字 * 2.线程名字 * */ public class TestThread { public static void main(String[] args) { //兔子线程 RabbitRunnable rr = new RabbitRunnable(); Thread tr = new Thread(rr); tr.setName("兔子线程"); //给线程设置名字 tr.start(); //启动兔子的线程 //乌龟线程 TortoiseThread tt = new TortoiseThread("乌龟线程"); tt.setName("乌龟线程"); //给线程设置名字 tt.start(); } }