欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

同步/异步,阻塞/非阻塞,并行/串行

程序员文章站 2022-05-28 16:17:23
...

同步:

methodA();

System.out.println(“synchronized”);

 

以上这个例子中,程序在运行时,调用了某个方法methodA,方法A运行完返回后,才执行打印,这就是同步。

 

异步:

当我们js中用ajax向服务器发送一个请求,服务器还没有响应(返回),我们的程序可以不管而继续往下执行,这就是异步。

 

阻塞:

当我们线程需要用某个打印机进行打印,但该打印机被另一线程占用,这个时候我们的线程就是进行阻塞,等待打印机空闲,这就是阻塞。

同步阻塞IO,是指我们向系统请求读某个文件(或者网络IO)时,系统内核需要等待数据准备完毕,才把数据从内核缓存写入到进程,这个过程,线程进入阻塞队列,待数据准备完毕。

 

非阻塞:

线程向系统请求读(网络IO)操作时,只发出指令,不需要进入阻塞队列等待数据准备完毕,而是通过轮循去看系统内核是否准备数据完毕,或者内系统内核完成后通知线程,这就是非阻塞。

同步与阻塞:最大的区别在于,同步的时候线程还是激活运行状态的,但阻塞的话,线程是进入阻塞队列被挂起的。

阻塞是调用线程的一种状态或行为,它的作用是放弃占用的cpu;而同步是多个线程之间的协调机制,它的作用是为了保证操作的顺序是正确可预期。

 

 

 

 

 

 

 

 

 

相关标签: java 多线程 io