所谓“同步”是指你要做一件事,等着他完成后,然后再做下一件事。实现的方法既可以是同线程调用一个函数(函数执行完了才能向下走)。
也可以是启动一个线程,但要等待线程执行完,比如用Future.wait。wait/notify,Thread.join,waitgroup等。
所谓“异步”是指你要发起一件事,但不太关心他做没做完,继续自己的。使用额外的线程发起是最常见的做法。
但也可以先把任务创建出来,并不执行。当前的执行继续往下走。那个被创建出来的任务等到合适的时机被同一个线程运行。如js里的await就是这样工作的。
现实中常见的思路是,尽量异步,尽可能塞更多更多工作给CPU。到逻辑上不得不需要一个事情必须做完时,再去等待。