一丶继承Thread类实现多线程
第一步:继承Thread类
第二步:重写run()方法
第三步:创建继承了Thread类的对象 , 调用start()方法启动。
//线程创建方式一 : /* 第一步:继承Thread类 第二步:重写run()方法 第三步:创建继承了Thread类的对象 , 调用start()方法启动。 */ public class TestThread extends Thread{ @Override public void run() { for (int i = 0; i < 3000; i++) { System.out.println("爱你三千遍"); } } public static void main(String[] args) { TestThread testThread = new TestThread(); testThread.start(); } }
二丶实现Runnable接口创建多线程
第一步:实现runnable接口
第二步:冲写run方法
第三步:创建实现类对象,创建代理类thread类对象 +start()方法启动线程
public class Thread_Study implements Runnable{ /* * 第一步:实现runnable接口 * 第二步:冲写run方法 * 第三步:创建实现类对象,创建代理类thread类对象 +start()方法启动线程 * * */ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("看书"); } } public static void main(String[] args) { Thread_Study ts = new Thread_Study(); new Thread(ts).start(); for (int i = 0; i < 100; i++) { System.out.println("敲代码"); } } }
运行结果:
敲代码
敲代码
敲代码
敲代码
敲代码
敲代码
敲代码
敲代码
看书
看书
看书
看书
看书
看书
看书
结论:
我们可以观察到敲代码和看书同时进行每个线程之间是不相互干涉的,各自执行各自的,这和调用方法不同,调用方法是等到上一个步骤执行完成才可以在执行下一个步骤.