线程中的重要概念:
并发:单个cpu通过cpu调度算法来回切换不同的任务,让用户看上去这些任务是同时执行的,其实是有先后顺序的,这是逻辑上的同时。“假并发”
并行:多个cpu或物理主机处理多个任务,这是物理上的同时。也是真正的“并发”
一图读懂并发并行:
线程安全:由于java的多线程是一种并发编程,多个线程访问进程的同一共享数据时,那么就存在安全问题。
同步:多线程串行访问一个数据或一段代码,保证同一时间只有一个线程正在进行访问这个数据或代码段。
同步保证了多线程并发的安全性,但是性能相对来说降低了(表现最明显的就是代码执行速度,因为这里线程的执行需
要排队了),我们通常使用Synchronized关键字来保证线程的同步。
异步:多线程并行(真正意义上的同时)处理某个任务,异步拥有更好的性能,但是不保证线程的安全性。