Что такое неблокирующий или asynchronous ввод-вывод в Node.js?

В контексте двигателей на стороне сервера Javascript, что такое неблокирующий ввод-вывод или asynchronous ввод-вывод? Я вижу, что это упоминается как преимущество перед реализациями на стороне сервера Java.

    Синхронный и asynchronous

    Синхронное выполнение обычно относится к последовательному исполнению кода. Асинхронное выполнение относится к выполнению, которое не выполняется в последовательности, появляющейся в коде. В следующем примере синхронная операция приводит к тому, что предупреждения срабатывают последовательно. В асинхронной операции, в то время как alert(2) представляется, выполняется вторым, это не так.

    Синхронный: 1,2,3

     alert(1); alert(2); alert(3); 
     var startTime = new Date().getTime(); var getEndTime = () => { var tempEndTime = new Date().getTime(); var second = (tempEndTime - startTime)/1000 return `took ${second} sec...to finish\n` } console.log('1: start App', getEndTime()) setTimeout(()=>{ console.log('2: setTimeout', getEndTime()) }, 1000) console.log('3: End App', getEndTime()) // console -> Process Order: 1 -> 3 -> 2 

    Пример кода

    Давайте будем гением компьютера.