一. 进程与线程的概念
- 进程是操作系统资源分配的最小单位,进程拥有独立的内存单元,进程间不会相互影响,多考虑通信
- 线程是 CPU 资源调度的最小单位,一个进程内部有多个线程,多个线程共享父进程的系统资源,线程仅独享指令流执行的必要资源,如寄存器和栈空间
- 区别:进程编程调试简单,但是创建和销毁切换开销大;线程开销小,切换速度快,但是编程层面相对复杂
二. 创建线程的三种方法
1. 继承 Thread 类 --- Thread 类本身也是实现了 Runnable 接口
public class MyThread extends Thread{
public static void main(String[] args) {
Thread thread = new Thread(()-> System.out.println("this a thread"));
thread.start();
}
}
2. 实现 Runnable 接口 --- 重写run方法
public class MyRunnable implements Runnable{
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
myRunnable.run();
}
@Override
public void run() {
System.out.println("this a thread");
}
}
3. 实现 Callable 接口 --- 重写call方法
public class MyCallable implements Callable{
public static void main(String[] args) throws Exception {
MyCallable myCallable = new MyCallable();
myCallable.call();
}
@Override
public Object call() throws Exception {
System.out.println("this a thread");
return null;
}
}
4. 实现 Runnable 接口和实现 Callable 接口的区别
1)Runnable 接口的调用方法叫 run 方法;Callable 接口的调用方法叫 call 方法
2)Runnable 接口无返回值;Callable 接口有返回值
3)Runnable 接口没有抛异常;Callable 接口有抛异常