版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/H_Targaryen/article/details/82055700
Java并发编程笔记(1):多线程入门介绍
每个Java应用都涉及到多线程,JVM、Servlet、JSP同理
(一)使用多线程的原因
- 首先要明确什么是线程?
- 线程也被叫做轻量级进程
- 同一个进程内的所有线程都将共享进程的内存空间
- 并发编程增大了编程的难度,让编写出正确的程序变难,那么使用多线程的优势在哪里?
- CPU基本的调度单位是线程,对于多处理器,多线程程序可以同时在多个CPU上运行,提高了硬件的利用率
- 而对于单处理器,在I/O的时间内利用处理器,提高了程序的吞吐率
- 服务器应用程序单线程时只能使用复杂的非阻塞I/O来替代I/O,而多线程能够为每个请求分配线程来解决发生请求对其他请求的处理阻塞问题
- 对于GUI,将事件响应提取出来为一个线程,其他线程在执行长时间操作的时候,事件线程能够对输入进行及时响应,提供了更灵敏的图形界面
(二)使用多线程的风险
- 安全问题:多个线程共享变量导致操作的发生不可预测,产生的结果也不可预测
- 死锁问题:线程之间相互要求对方的资源同时不释放自己的资源,导致永远等待的现象;类似的还有饥饿问题
- 性能问题:线程切换是会带来额外开销的,线程越多,CPU会花更多的时间在线程的切换上而不是每个线程的执行上