进程:系统进行资源分配和调度的独立单位,每一个进程都有它自己的内存空间和系统资源。
进程实现多处理机环境下的进程调度分派,切换时,都需要花费较大的时间和空间开销。
通俗话:为了提高系统的执行效率,减少处理机的空转时间和调度切换的时间,以及便于系统管
理,所以有了线程,线程取代了进程了调度的基本功能。
简单来说,进程作为资源分配的基本单位,线程作为资源调度的基本单位。
使用多线程最主要的原因是提高系统的资源利用率。
(现在CPU基本都是多核的,如果你只用单线程,那就是只用到了一个核心,其他的核心就相当于空闲在那里了)
比如说,我们系统Web服务器用的是Tomcat,Tomcat处理每一个请求都会从线程连接池里边用一个线程去处理。
又比如说,我们用连接数据库会用对应的连接池 Druid/C3PO/DBCP等等。
我个人解决线程安全问题的思路有以下:
原因: 当前线程拥有其他线程需要的资源,当前线程等待其他线程已拥有的资源,都不放弃自己拥有的资源。
避免死锁的方式一般有以下方案: