并发
一、什么是并发?
并发是并行运行多个程序或程序的多个部分的能力。如果可以异步或并行执行耗时的任务,则可以提高吞吐量和程序的交互性。
现代计算机在一个CPU中具有多个CPU或多个内核。利用这些多核的能力可能是成功实现大批量应用程序的关键。
二、进程与线程
一个进程独立运行并与其他进程隔离。它不能直接访问其他进程中的共享数据。进程的资源(例如内存和CPU时间)通过操作系统分配给它。
一个线程是所谓的轻量级进程。它具有自己的调用堆栈,但可以在同一进程中访问其他线程的共享数据。每个线程都有自己的内存缓存。如果线程读取共享数据,则它将数据存储在其自己的内存缓存中。线程可以重新读取共享数据。
Java应用程序默认在一个进程中运行。在Java应用程序中,您需要使用多个线程来实现并行处理或异步行为。
Java中的并发
一、进程和线程
Java程序在自己的进程中运行,并且默认情况下在一个线程中运行。Java通过Thread 代码将线程作为Java语言的一部分来支持 。Java应用程序可以通过此类创建新线程。
Java 1.5还为java.util.concurrent 包中的并发提供了改进的支持 。
二、锁和线程同步
Java提供 锁 以保护要由多个线程同时执行的代码的某些部分。锁定一定的方法或Java类的简单的方式是定义与方法或类 synchronized 关键字。
该 同步 在Java中,确保关键字:只有一个线程可以同时执行一个代码块
每个线程进入同步的代码块看到的是由同一锁保护所有先前的修改的效果
同步对于互斥访问线程的块以及线程之间的可靠通信是必需的。
您可以使用 synced 关键字定义方法。这样可以确保只有一个线程可以同时进入此方法。另一个正在调用此方法的线程将等到第一个线程离开此方法。