多线程编程的优势和存在的风险
1、优势
1、提高系统的吞吐率,多线程编程可以使一个进程有多个并发(同时进行)的操作。
2、提高系统响应率,Web服务器会采用一些专门的线程负责用户请求处理,缩短了用户等待时间。
3、充分利用了多核心处理器资源,通过多线程可以充分利用CPU资源。
2、风险
1、线程安全(Thread safe)问题:多线程共享数据,如果没有采取正确并发访问控制措施,就可能会有数据不一致性的问题。读取脏数据
2、线程活性(Thread liveness)问题:用于程序自身的缺陷或者资源稀缺性导致线程一直处于非RUNNABLE状态,常见故障有以下几种:
死锁(Deadlock):类似于鹬蚌相争。
锁死(Lockout):类似于欧睡美人故事中王子挂了。
活锁(livelock):类似于小猫咬自己尾巴。
3、可靠性:可能会由一个线程导致了JVM意外终止,其他线程也无法执行。