同步和异步的区别

时间:2023-04-06 10:57:39

同步

多线程的数据共享问题

多个线程访问同一资源时,需要以某种顺序来保证资源在某一时刻只能被一个线程使用。

例如:当多个线程同时对同一数据进行写操作。即A线程需要使用某个资源,此时这个资源正在被B线程使用,同步机制就会让A线程进行等待,直到B线程结束对该资源的使用,A线程才能使用该资源。

同步机制保证了资源的安全问题

Java语言的同步机制

  1. 同步代码块
  2. 同步方法
  3. 可以使用synchronized关键字来实现同步(该方法有较大的系统开销,有的时候会造成死锁问题)

异步

定义

同步的相反。

每个线程都包含了自己的数据和方法,在进行输入输出处理时,不必关心其他线程的状态或者行为。

也不必等待输入输出处理完毕才返回。

什么时候使用异步

在程序执行过程中调用了一个需要花费很长时间的方法,但是我们不希望程序等待这个方法的返回。此时可以使用异步编程,异步编程提高了程序的效率

生活实例

同步:银行的一个窗口排队,按照顺序执行。
异步:银行的多个窗口排队。

参考资料:学习Java,你一定要知道同步和异步的区别!