I am a software development engineer @ Amazon AWS. I graduated from UPenn and Brandeis. I hope everyone stay strong and stay healthy in these challenging times.
OS Basics
Multiple Thread (Runnable vs. Thread), Part 1
- Multi-threading states
- Java thread init methods
- Examples of Thread and Runnable
Multi-threading states
- new: 新建状态,保持这个状态直到程序start()
- ready: 调用了start(),就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度
- running: 获取了CPU资源,执行run()里面的指令
- suspend: 失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种
- 等待阻塞: wait()
- 同步阻塞: 线程在获取synchronized同步锁失败后
- 其他阻塞: 其他阻塞:通过调用线程的sleep()或join()发出了I/O请求时,线程就会进入到阻塞状态
- dead: 一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态
Java thread init methods
Java 提供了三种创建线程的方法
- 通过实现Runnable接口
- 通过继承Thread类本身
- 通过Callable和Future创建线程
Java thread example
1 | // class extending Thread |
Runnable Example
1 | import java.util.concurrent.locks.Lock; |