Відповідь 1:

Уявіть собі це: - припустимо, у вас є доставка з Амазонки додому. Того дня ви просите когось отримати доставку від вашого імені. Тим часом ти займаєшся щоденними регулярними заходами.

Тепер, що робити, якщо ви вирішите залишитися вдома і дочекатися надходження доставки? Ваші інші дії потрібно буде почекати, поки ви не отримаєте доставку.

Перша ситуація асинхронно-чекає, тоді як друга ситуація є синхронною.

Технічно кажучи, під час асинхронізації ви створите потік (завдання), який чекає результату, а решта вашого коду продовжує працювати.

У синхронному коді все буде чекати, в результаті чого ваш код "зависне".

Не забудьте проголосувати ...


Відповідь 2:

Обидва створюють потік програми, але у випадку, якщо Async / Await Thread не чекає, і їх можна використовувати для інших цілей. Це ж неможливо у випадку синхронного (блокуючого) коду.

Async / Await надає вам абстракцію цукру за допомогою лише зворотних викликів асинхронізації та ланцюгового вручну.

Хоча Runtime (наприклад, Erlang і Golang) може обробляти не блокуючий характер сокетів і потоків файлів внутрішньо і надавати синхронний, як синтаксис, на мовному рівні.

Отже, як бачите, це просто конструкції абстракції. Ви також маєте на увазі, на що здатний Runtime.

Ще однією перевагою використання Async / Await є те, що ви можете чекати, коли хочете, а не відразу домогтися паралельності, що неможливо, якщо Runtime не підтримує Green Threads.