多线程中 同步,同步调用,异步调用,并发,并行。这些概念常常分不清,经整理如下:
同步资源:指的是 同步代码块同步方法 如用 synchronized ,或者 lock 关键字 对代码块或方法,进行枷锁操作,从而是公共资源保证同步。
同步调用:顺序调用,等待返回结果后才进行下面执行。
异步调用:线程间的结果依赖,但是不会等待另一个线程返回结果,继续向下执行。
并发:多个线程访问同一个公共资源。
并行:多个线程在多个CPU上同时运行。如图:
thread1 ---------------------------------> CPU1
thread2 -----------------------------------> CPU2