分布式与高并发系列:一、多线程的意义和使用
线程:轻量级进程,是CPU最小的调度单元
1.并发/高并发
硬件:CPU、内存、磁盘、网络
软件:最大化的利用硬件资源:线程数量、JVM内存分配大小、网络通信机制(BIO,NIO,AIO)、磁盘IO
并发和并行:
并发:体现的是服务端承载的吞吐量 单核心CPU也是支持多线程的,cpu的时间片切换
并行:CPU能同时处理的多个线程
多线程特点:1.异步 2.并行
Java中的线程
Runnable接口
Thread类
Callable/future
线程基础
线程的生命周期
状态:
阻塞 (线程阻塞都会释放CPU)
WAITING wait()
TIMED_WAITING sleep(100) 带有休眠时间的阻塞
BLOCKED 没抢到锁的状态
IO阻塞
线程的启动
new Thread.start()
为什么不是run?
线程启动过程:
线程的终止
run方法执行结束
volatile jint_interrupted; state
t1.stop() //及其不推荐,会造成数据的不完整
t1.interrupt();
Thread.isInterrupted() //复位
interrupt()
设置一个共享变量的值true
唤醒处于阻塞状态下的线程 (阻塞状态下的线程都会有 InterruptedException来捕获,并在其中处理)
本质上interrupt()是通过一个共享变量来实现线程间的通信