阻塞非阻塞
阻塞非阻塞关注的是操作系统无法满足线程的IO诉求时,线程会采取什么操作。
阻塞:线程处于等待状态,直到条件满足为止,不会继续执行后续代码。好处:在等待期间,线程不会占用CPU资源;坏处:线程是昂贵的资源,如果所有线程都阻塞,可能会没有足够的空间创建新的线程
非阻塞:即使条件未满足,也不会暂停执行,而是立即返回并继续执行其他操作。非阻塞操作不会导致线程挂起,而是通过轮询、回调等方式处理未满足的条件。好处:线程会持续执行,线程资源不太可能被用光;轮询的时候浪费CPU时间
同步异步
同步异步关注的是消息的通知机制以及多个线程中多个任务执行时的顺序性和依赖性。
同步:后一个任务依赖于前一个任务是否完成,即前一个任务完成后才能执行后一个任务,调用者主动拉取返回结果的
异步:任务不需要按顺序执行,可以并行进行。一个任务的开始不需要等待其他任务完成。异步操作允许程序在等待某些操作完成时,继续执行其他任务。完成后被调用者通过通知,回调等通知调用者。