继承Thread类和实现runnable接口
Thread类
package com.thread;
//创建线程方式一:继承Thread类,重写run()方法,调用start开启线程
//线程开启不一定立即执行,由cpu调度执行
public class TestThread1 extends Thread{
@Override
public void run() {
//run方法线程体
for (int i = 0; i <20; i++) {
System.out.println("我在看代码"+i);
}
}
public static void main(String[] args) {
//main线程,主线程
//创建一个线程对象
TestThread1 testThread1 = new TestThread1();
//调用statr()方法开启线程
testThread1.start();//两个线程同时执行,单核cpu交替执行
for (int i = 0; i < 200; i++) {
System.out.println("我在学习多线程"+i);
}
}
}
实现runnable接口
- 定义MyRunnable类实现Runnable接口
- 实现run()方法,编写线程执行体
- 创建线程对象,调用start()方法启动线程
package com.thread;
//创建线程方式2,实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法
public class TestThread03 implements Runnable{
@Override
public void run() {
//run方法线程体
for (int i = 0; i <20; i++) {
System.out.println("我在看代码"+i);
}
}
public static void main(String[] args) {
//创建runnable接口的实现类对象
TestThread03 testThread03 = new TestThread03();
//创建线程对象,通过线程对象来开启线程,代理
Thread thread = new Thread(testThread03);
thread.start();
//new Thread(testThread03).start();
for (int i = 0; i < 200; i++) {
System.out.println("我在学习多线程"+i);
}
}
}
小结
-
继承Thread类
-
子类继承Thrad类具备多线程能力
-
启动线程:子类对象.start()
-
不建议使用:避免OOP单继承局限性
-
-
实现Runnable接口
- 实现接口Runnable具有多线程能力
- 启动线程:传入目标对象+Thread对象.start()
- 推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用