春招学习第13天(13/30)
今日计划:
- 复习多线程,开篇JUC
- 参加卓望数码宣讲会
程序、进程和线程
程序是静态的,跑起来就成了一个动态的进程,进程里可以有多个线程存在,JAVA则里会有main线程和GC垃圾回收线程。
使用多线程的三种方式
继承Thread类
- 自定义类继承Thread接口并且重写run方法
- new一个自定义类对象
- 调用对象的start()方法
注意的点:start()方法调用后不一定会立即执行,而是由CPU进行调度安排。
实现Runnable接口
- 实现Runnable接口
- 实例化对象后在Thread类中传入对象
- 调用start()方法
对比:Runnable是接口,避免了单继承的局限性,灵活方便,一个对象可以被多个线程调用。
实现Callable接口
- 创建执行服务
- 提交执行
- 获取结果
- 关闭服务
不同:可以有返回值,可以抛出异常。