进程就是一个运行中的程序, 一个进程中可以有多个线程,线程是CPU调度和分派的基本单位, 可以理解为线程就是程序运行中的一条路径;
多个线程并发执行, 提高程序运行效率;
Thread 要继承, 而Runnable 是实现, 两者的区别是: 1: 继承Thread: 线程代码存放在Thread子类的run()方法之中; 定义类继承Thread, 重写run()方法, 创建对象调用start()方法,开启线程并调用run()方法;
2: 实现Runnable: 线程代码存放在接口子类的run()方法之中; 实现Runnable 接口,重写Runnable接口中的run()方法,将要运行的代码存放在run()方法中, 通过Thread类建立线程对象,将Runnable的子类对象作为实参穿给Thread的构造函数, 调用Thread类的start()方法开启线程并调用Runnable子类的run()方法; 之所以要将Runnable的子类对象船给Thread,就是因为run()方法所属的对象是Runnable的子类对象, 所以要让线程去指定对象的run()方法, 就必须明确该run()方法所属对象;
我建议用实现的方式创建线程, 因为实现的方式避免了单继承的极限性; |