1.实现runnable接口,重写run()方法,run()方法里的内容即为该线程要做的那些事
/** * 测试实现Runnable接口的类 * * @author zx */ public class TestRunnable implements Runnable{ private String name; public TestRunnable(String name) { this.name = name; } @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(name+":"+i); } } } 在创建Thread实例的时候调用它的有参构造public Thread(Runnable target) { init(null, target, "Thread-" + nextThreadNum(), 0); }即: public class ThreadTestRunable { public static void main(String[] args) { Thread t1 = new Thread(new TestRunnable("张三")); Thread t2 = new Thread(new TestRunnable("李四")); t1.start(); t2.start(); } }
运行结果:
张三:0 张三:1 张三:2 张三:3 张三:4 李四:0 李四:1 李四:2 李四:3 李四:4 2.直接继承Thread,重写run()方法 ,调用直接创建实例,调用start()方法即可 /** * * 测试扩展Thread类的实现多线程程序 * @author zx */ public class ThreadTest extends Thread{ public ThreadTest(String name){ super(name); } @Override public void run(){ for (int i = 0; i < 5; i++) { System.out.println(this.getName()+":"+i); } } public static void main(String[] args) { ThreadTest t1 = new ThreadTest("张三"); String name2 = t1.getName(); ThreadTest t2 = new ThreadTest("李四"); t1.start(); t2.start(); } } 运行结果: 张三:0 李四:0 李四:1 张三:1 李四:2 李四:3 李四:4 张三:2 张三:3 张三:4