多线程的发展:
批处理操作系统:把所有任务都加载
-->进程:各个进程的有独立的内存空间、有个计数器,可以保存它当前所运行的位置
-->线程:为了让进程可以同步执行
线程出现以后,cpu的最小调度单元为线程
进程让操作系统实现了并发、而线程让进程内部实现了并发
线程的状态:6种
NEW
RUNNABLED(就绪、运行)
BLOCKED(阻塞):等待阻塞、同步阻塞、其他阻塞
WAIT
TIME_WAITING
TEAMINATED
线程:每个线程都有自己的内存空间(线程栈),对共享资源进行操作的时候,线程会将这个数据从主存储空间复制一份到自己独立的空间中进行操作,然后再将数据刷新到主存储空间中
线程的运行是由调度算法调度执行的,而不是直接就执行了
如何去终止一个线程:
interrupt(终端)
isinterrupt(判断是否被中断)
Thread.interrupted()复位,可以让线程继续运行
InterruptException 复位
Thread.join();调用该方法会让主线程阻塞,导致其他线程不用运行,可以让线程有序执行
vaolatile :保证可见性
什么是死锁
JMM
JMM是动态的内存模型,定义的是线程和内存的交互方式
为什么synchronize在分布式中不管用?
因为synchronize是在一个jvm中起作用的,分布式系统是多个jvm
线程安全