同步、异步、串行、并行相关问题

1.什么是同步,什么是异步?

同步是指程序的执行按照预定的顺序,一个任务完成后才能进行下一个任务,在同步中,调用处会等到被调用方执行完毕并返回结果后,才能执行后续的代码,比如在Java中,正常的调用一个方法。

异步是指程序的执行不按照预定的顺序,调用方发出调用后,不等待被调用方返回结果,而是立刻执行后续的代码,被调用方在执行完成后,通过回调函数将结果通知给调用方,如axios异步请求。

2.什么是串行,什么是并行?

串行和并行是描述任务执行方式中的概念。

串行就是指任务或操作按照严格的先后顺序一个接一个地执行,在任何时刻,只有一个任务正在被执行,其他后续任务需要等到当前任务完成后才能开始执行。单线程下,任务就是串行方式执行的,程序语句按照顺序一个接一个执行。

并行是指多个任务在同一时间段内同时执行,各自执行自己的任务,互不影响,并行处理可以提高整体的处理速度,并行执行注重并发性和资源共享。

3.什么是同步任务,什么是异步任务?

同步任务是指按照代码顺序,一个接一个地执行任务,在同步任务中,调用方会等待被调用方执行完毕返回结果后,才能继续执行后续的代码,是顺序的执行,并且是阻塞调用。

当同步任务放入串行队列中执行,会按照顺序执行,同步任务会阻塞调用它的线程,下一个同步任务必须等待前一个任务完成后才能开始执行。
当同步任务放入并发队列中执行,还是阻塞性的,会按照顺序执行,尽管并发队列允许并发执行,但同步任务实际上会串行化它们的执行。

异步任务是指不按照代码顺序执行,调用方发出调用后,不需要等待被调用方返回的结果,而是立即执行后续的代码,被调用方在执行完成后,通过回调函数将结果通知给调用方,非顺序的进行,并且是非阻塞的调用,任务之间可以独立的运行和完成。

当异步任务放入串行队列中执行,即使任务是异步的不会阻塞,但后面的还是必须等待前面的任务完成后才能开始,从队列角度看,也是顺序执行。
当异步任务放入并发队列中执行,异步任务不会阻塞调用它的线程,它们可以在不同的线程上并发执行,而无需等待其他任务的完成。

4.同步线程和异步线程的区别?

我觉得同步线程和异步线程的主要区别体现在线程的执行顺序上吧。

同步线程意味这多个线程是按照一定的顺序去执行的,每一个线程都需要等待前一个线程执行完毕之后才能开始执行,一般用于需要严格控制执行顺序的场景,可以采取一些同步的方式,如wait()和notify()、JUC中的一些辅助类countdownLatch来进行实现。

异步线程是指多个线程之间的执行顺序是不确定的,每一个线程是独立执行的,互不干扰,异步线程就是可以同时处理多个任务,而不需要等待其他任务的完成情况。

所以同步线程强调线程之间的顺序执行和可预测性,而异步线程则注重线程的独立性和并行处理能力。

5.什么是串行队列,什么是并发队列?

串行队列和并发队列是用于任务调度的两种队列类型吧。

串行队列在同一时间只允许一个任务被执行,队列中的任务会按照它们被添加的顺序一个接一个的执行,每一个任务必须等待前一个任务完成后才能开始执行,特点就是顺序执行,并且无并发性吧,就是同一时间只有一个任务在执行。

并发队列允许多个任务同时执行,虽然任务也是按照它们添加进队列的顺序开始执行,但是在同一时间,可能就会有多个任务在并发执行,虽然任务是按照顺序开始的,但是执行无序的,可能最终会以不同的顺序完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值