Каква е разликата между асинхронния и синхронния в Java?


Отговор 1:

Java код се изпълнява ред по ред. Да предположим, че ако четете набор от големи файлове с подробности за изпитите за училищата в цялата държава, където един файл има данни за резултатите от изпитите на едно училище.

Освен това искате да сортирате студентските записи по общи оценки за клас и да се показват в потребителския интерфейс. Ако напишете това като нормален java код (т.е. Без многократна резба), всеки ред ще изпълнява един по един. Не можете да обработите друг файл, ако един файл все още не е обработен. Ако искате да направите каквато и да е паралелна операция например: Създаване на DB връзка, не можете да направите, защото това ще се случи само след като обработката на вашия файл бъде извършена. Това последователно поведение може да бъде наречено като синхронно поведение.

Сега можете много добре да четете и обработвате подгрупа от файлове, без да прекъсвате обработката на други файлове, като изпълнявате паралелно задачи (известни още като Теми). Обаждащият се (този, който се нуждае от резултата) може да бъде уведомен, когато обработката приключи и резултатът може да бъде използван за по-нататъшна обработка. И така, изпълнението, което се случва независимо, без да се прекъсва Нормалният поток на изпълнение, се нарича Asynchronous call.

Има няколко начина, по които можете да извършвате асинхронни разговори в Java в зависимост от вашите изисквания. (Но да ги контролираме добре е изключително важно и понякога сложно.)

В допълнение към Runnable интерфейс (който се използва за просто изпълнение на задачи, но не връща нищо на обаждащия се), можете да прочетете за Callable интерфейс и бъдещи обекти в Java. (Което може да върне данни на обаждащия се)

Този фрагмент е от блог на oracle

Използване на Callable за връщане на резултати от Runnables


Отговор 2:

Асинхронно срещу синхронно изпълнение

Разликата между синхронно и асинхронно изпълнение в началото може да изглежда малко объркваща. Изпълнението на програмата на повечето езици на високо ниво обикновено е много лесно. Вашата програма започва от първия ред на изходния код и всеки ред код се изпълнява последователно след това. Достатъчно лесно.

Синхронното изпълнение на програмата донякъде е подобно на горното. Програмата ви се изпълнява по ред, по един ред по един. Всеки път, когато се извика функция, изпълнението на програмата изчаква, докато тази функция се върне, преди да продължи към следващия ред код.

Този метод на изпълнение може да има нежелани последствия. Да предположим, че е извикана функция за стартиране на времеемък процес. Ами ако искате да спрете продължителния процес? При синхронно изпълнение вашата програма е „заседнала“ и чака процеса да приключи, без изход.

Асинхронното изпълнение избягва това тясно място. По същество казвате: „Знам, че това обаждане на функция ще отнеме много време, но програмата ми не иска да чака, докато се изпълнява.“

За повече подробности прочетете блоговете по-долу,

http: //learn4sfdc.blogspot.in/20 ...

http: //www.bisque.com/help/ccdso ...

Това може да ви помогне ..!