线程进程的区别
- 线程是cpu分配和调度的基本单位
- 进程是资源分配和调度的基本单位
- 线程是指进程中的一个执行单元,是进程内的可调度实体
- 进程至少有一个线程,同一个进程内的线程共享进程的资源
- 二者都可以并发执行
什么是线程安全
当多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替运行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获取正确的结果,那这个对象是线程安全的。
线程的生命周期
- 新建(new thread)未被启动
- 就绪(runnable)就绪队列排队等候
- 运行(running)获得CPU资源执行任务
- 死亡(dead)执行完毕或被其他线程杀死
- 阻塞(blocked)让出CPU并暂停执行
Java实现线程的几种方式
- 继承Thread类创建线程
- 实现Runnable接口创建线程
- 实现Callable接口通过Future Task包装器来创建线程
- 使用ExecutorService、Callable、Future实现有返回结果的线程