并发是指某个时间段内,多个任务交替执行的能力。 CPU 把可执行时间均匀地分成若干份,每个进程执行一段时间后,记录当前的工作状态,释放当前的执行资源并进入等待状态,让其他进程抢占 CPU 资源。并行是指同时处理多任务的能力。目前, CPU 已经发展为多核,可以同时执行多个互不依赖的指令及执行块。
并发和并行的目标都是尽可能快执行完所有的任务,两者区别核心在于进程是否同时执行,并发环境有着以下几个特点:
-
并发程序之间有相互制约的关系。
-
并发程序的执行过程是断断续续的。
-
当并发设置合理并且 CPU 拥有足够的处理能力时,并发会提高程序的运行效率。
线程安全
我们都知道,进程是操作系统进行资源分配的独立单位,而线程是CPU调度和分派的基本单位,为了更充分地利用CPU资源,一般都会使用多线程进行处理。多线程的作用是提高任务的平均执行速度。
线程可以拥有自己的操作栈、程序计数器、局部变量表等资源,它与同一进程内的其他线程共享该进程的所有资源。线程在生命周期内存在多种状态,分别为NEW(新建状态)、RUNNABLE(就绪状态)、RUNNING(运行状态)、BLOCKED(堵塞状态)、DEAD(死亡状态) 五种状态。线程状态图如下

NEW-新建状态
New 是线程被创建且未启动的状态。线程被创建的方式有三种:第一种继承 Thread 类,第二种实现 Runnable 接口,第三种实现 Callable 接口。由于 Java 单继承限制,所以推荐第二种,实现 Runnable 接口可以使编程更加灵活,对外暴露的细节比较少,开发者只需专注于具体的实现,即 run 方法的实现。第三种方式是实现 Callable

本文探讨了并发与多线程中的线程安全问题,详细介绍了线程的五种状态,并分析了线程安全的四个解决维度:数据单线程内可见、只读对象、线程安全类和同步与锁机制。还提到了Java并发包中的线程同步类、并发集合类、线程管理类和锁相关类,以及如何避免线程不安全情况的发生。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



