Java 多线程 (并发)总结
- - CSDN博客推荐文章《进程与线程的一个简单解释》 简单摘要如下. 电力有限,一次只能供给一个车间使用. 进程的内存是共享的,每个线程都能使用. 一个线程使用内存空间时,其他线程必须等它结束. 车间厕所,有人时其他人不能进入. 某内存空间,仅供固定数目线程使用. 挂N把锁,进入的人拿钥匙锁上,出来时放回. (1)Runnable接口 (通常选择这种,接口本身可以实现多重继承,比较灵活).
计算机概念 | 类比 |
CPU | 一座工厂 |
单CPU一次执行一个任务 | 电力有限,一次只能供给一个车间使用 |
进程 | 工厂的车间 |
线程 | 车间里面的工人 |
线程并发 | 一个车间很多工人 |
进程的内存是共享的,每个线程都能使用 | 车间弓箭是工人们共享 |
一个线程使用内存空间时,其他线程必须等它结束 | 车间厕所,有人时其他人不能进入 |
“互斥锁” | 厕所上加个锁,进入时锁上 |
某内存空间,仅供固定数目线程使用 | 厨房可以同时容纳多个人 |
“信号量” | 挂N把锁,进入的人拿钥匙锁上,出来时放回 |
类名 | 方法 | 功能 |
Object | wait | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。(释放对象锁,调用notify继续执行) |
Object | notify/notifyAll | 唤醒在此对象监视器上等待的单个/所有线程。 |
Thread | sleep | 在指定的毫秒数内让当前正在执行的线程休眠(不释放对象锁,一段时间后自动执行) |
Thread | join | 等待该线程终止。再恢复当前线程执行 |
Thread | getPriority / setPriority | 取得或设置优先级数值 |
Thread | currentThread | 取得当前运行的线程 |
Thread | start | 通知线程规划期这个新线程已准备就绪,而且应当在规划的最早方便时间爱你调用他的run()方法。 |
Thread | isAlive | 用来测试线程是否启动,即线程是否还未终止。 |
Thread | yield | 让出自己的CPU时间片,但是只让出一小会,并不是永远让出不执行 |
为什么要用线程池: