在说到Java并发前,大家首先都要先了解或者认识什么是单线程和多线程。
在过去单核CPU的时代,计算机只能在单一时间点执行单一程序(或者单个任务),然而这样CPU的使用率会变得很低。当程序在进行文件读取时不能进行文件写入,为了满足这样的需求,引入多线程的概念。多线程的引入,使得CPU可以在同一时间执行多个线程(实际上是多个线程抢占CPU的时间片),进而提升整体处理性能。随着技术的快速发展,多核CPU的出现,使得CPU真正做到在同一时间内执行多个线程。到此为止,相信对于单线程和多线程都有了一定的了解。
Java是最先支持多线程的开发的语言之一,Java从一开始就支持了多线程能力,因此Java开发者能常遇到上面描述的问题场景。因此这也是为什么我拿多线程来解释Java并发的原因,但是在这里需要注意的是Java多线程不等价于Java并发性,并发性是描述多线程或者分部署的专业名词。