多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、读写锁)、ThreadLocal、信号量等在并发控制中发挥着巨大的作用。
多线程设计模式:
1.Single Threaded Execution Pattern
[同一时刻只允许一个线程操作]
比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。
总结:在多个线程同时要访问的方法上加上synchronized关键字。
2.Immutable Pattern
[变量赋值一次后只能读取,不能改变。] 比喻:一夫多妻制,多个妻子共享一个丈夫。一旦赋值,任何一个妻子不能更改共享的 husband为其它人。
总结:将多线程共享的变量用final关键字修饰。
3.Guarded Suspension Pattern
[要等到我准备好哦,没准备好就在门口等着,准备好了再叫你。] 比喻:
GG:小伙子去MM家,敲门...
MM:我在换衣服,稍等。
GG:等待 【调用wait()方法挂起自己的线程】
MM:换好了,进来吧 【调用notify()或着notifyAll()方法通知GG】
总结:判断某个条件是否为真,如果条件成立则继续执行一步,如果条件不成立用wait()方法挂