多线程
- 程序是静态的
- 进程是程序执行的过程
- 一个进程可以有至少一个或多个线程
Thread类
- 自定义线程继承Thread类
- 重写run()方法,编写线程执行体
- 创建线程对象,调用start()方法启动线程
代码例子:
//线程创建方式一:继承Thread类,重写run()方法,调用start开启线程
public class TestThread1 extends Thread{
@Override
//run方法线程体
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("run"+i);
}
}
//main主线程
public static void main(String[] args) {
//创建一个线程对象
TestThead1 testThead1 = new TestThead1();
//调用start()方法开启线程
testThead1.start();
for (int i = 0; i < 5 ; i++) {
System.out.println("main"+i);
}
}
}
运行结果:
在多线程程序运行中,线程由CPU调度交叉执行每个线程
实现Runnable接口
- 定义MyRunable类实现Runable接口
- 实现run()方法,编写线程执行体
- 创建线程对象,调用start()方法启动线程
代码例子:
//创建线程方式2:实现runnnable接口,重写run方法,
// 执行线程需要丢入runnable接口实现类,调用start方法
public class TestThread2 implements Runnable{
@Override
//run方法线程体
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("run"+i);
}
}
//main主线程
public static void main(String[] args) {
//创建runnable接口的实现类对象
TestThread2 testThread2 = new TestThread2();
//创建线程对象,通过线程对象来开启我们的线程
Thread thread = new Thread(testThread2);
thread.start();
for (int i = 0; i < 5 ; i++) {
System.out.println("main"+i);
}
}
}
结果:
总结
继承Thread类
子类继承Thread类具备多线程能力;
启动线程:子类对象.start()
**不建议使用**:避免OOP单继承局限性
实现Runnable接口
实现接口Runnable具有多线程能力
启动线程:传入目标对象+Thread对象.start()
**推荐使用**:避免单继承局限性,方便同一对象被多个线程使用