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

同步:

methodA();

System.out.println(“synchronized”);

 

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

 

异步:

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

 

阻塞:

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

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

 

非阻塞:

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

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

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

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程是操作系统能够进行运算调度的最小单位,它是进程中的一个实体。线程可以被操作系统独立地进行调度和执行,并与同一进程中的其他线程共享进程的资源。 首先,串行线程是指多个线程按照顺序依次执行,一个线程的执行必须在前一个线程执行完毕之后才能开始。这意味着多个任务无法同时进行,执行效率相对较低。 其次,并行线程是指多个线程同时进行执行,每个线程独立执行自己的任务,互不干扰。这样可以大大提高程序的执行效率。 然后,同步线程是指多个线程之间存在有序的执行关系,每个线程需要等待其他线程执行完毕之后才能开始自己的任务。同步线程可以保证数据的一致性,但容易造成程序的阻塞。 最后,异步线程是指多个线程之间不存在执行的先后顺序,各个线程可以独立执行自己的任务。异步线程可以提高程序的响应速度和并发性,但需要特别注意线程安全问题。 总结起来,线程的执行方式可以分为串行并行同步异步四种情况。其中,串行线程按照顺序执行,效率较低;并行线程可以同时进行,提高执行效率;同步线程按照有序关系执行,保证数据一致性;异步线程可以并发执行,提高响应速度。根据具体的应用场景和需求,选择合适的线程模式可以提高程序的执行效率和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值