一,同步,异步
他们都是形容一次方法调用,同步方法只有等调用者调用返回后 ,才可以继续后续的同步方法。时间比较长,浪费cpu的资源
异步方法,调用者调用后就会立即返回,调用者可以继续后续的操作,异步方法只是在另外一个线程真实的执行。
举例:同步方法好比 你去商城实体店买一个电器,那么你就要等着商品出库然后一起回家安装
异步方法 好比你在网上买一个电器,下单后,就可以干别的事,去处去玩啊之类的,最后会有快递员替你运来商品,替你安装。
二,并发(concurrency),并行(parallelism)
两者都表示有两个或者多线程一起执行,但是着重点不同。
并发,着重于多个任务交替执行。而多个任务之间可能是串行的,
并行是真正意义的同时执行。
实际上,在单个cpu上多个任务的执行是并发执行的,只有在多个cpu时,多个任务的执行时才有可能并行。
三,临界区
表示一种公共资源或者是共享数据,可以被多个线程使用。但每次只有一个线程可以使用。加锁可以理解为一种临界区,
四,阻塞与非阻塞
这时形容多线程之间的相互影响。
比如一个线程占用临界资源,那么其他线程就必须等待,这就是阻塞,一个线程正在读取一个文件,那么其他线程也要操作者个文件,那么其他线程就必须等待。这时其他线程就处于阻塞状态。
参考:《Java好并发程序设计》