- 进程是操作系统拓扑管理的基本单位
- 线程是进程中,独立运行的子任务
- 在多线程中, 代码的顺序 , **[不是]**线程的执行顺序.
- start()和run()
- start()是启动新线程执行方法,异步
- run()是当前线程执行方法,同步.和调用其他正常方法一样
- Thread和Runnable
- 两种方式在工作时性质是一样的, 没有本质区别
- Runable 接口
- 理解: 异步类的标识及规范
- 实现此接口,并重写run()方法.才是异步方法
- 需要配合Thread类,才能实现任务调度,异步执行
- Thread
- 理解: 线程调度,线程状态
- 调度
- 启动
- 暂停
- ......
- 状态
- 属性: 名称,ID,状态
- 实时: 是否存活,是否被打断
- 等等
- 其他一些管理功能接口
这么看来,Thread和Runnable是完全不同的两个东西.Thread实现Runnable真的是多此一举.
- 调度
- Thread类实现了Runnable接口
Thread包含Runnable接口功能,但不如Runnable灵活. 继承Thread类,也可以实现run()方法,但单继承局限.public class Thread implements Runnable
- 理解: 线程调度,线程状态
- 线程间的对象数据不共享
从JVM的角度去理解这个问题,变量的指针是存在虚拟机栈中的,而虚拟机栈是线程隔离的,每个线程,都是新的栈帧.相互隔离.
- 静态数据可共享
静脉常量在方法区中 , 线程直接访问方法区, 方法区线程共享 .