>  기사  >  Java  >  Java에서 동기식과 비동기식의 차이점은 무엇입니까?

Java에서 동기식과 비동기식의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2019-12-26 16:57:086339검색

Java에서 동기식과 비동기식의 차이점은 무엇입니까?

개념:

1. 동기화: 사용자에게 반환되기 전에 모든 작업이 완료됩니다. 이런 방식으로 사용자는 온라인에서 너무 오랫동안 기다리게 되어 사용자에게 정체된 느낌을 줍니다. 즉, 시스템이 마이그레이션되는 동안 Migrate를 클릭하면 인터페이스는 이동하지 않지만 프로그램은 여전히 ​​실행 중이어서 사용자에게 막힌 느낌). 이 경우 사용자는 인터페이스를 닫을 수 없습니다. 인터페이스가 닫히면 마이그레이션 프로세스가 중단됩니다.

2. 비동기식: 사용자 요청을 메시지 대기열에 넣고 이를 사용자에게 피드백합니다. 시스템 마이그레이션 프로그램이 시작되었으며 브라우저를 닫을 수 있습니다. 그런 다음 프로그램은 천천히 데이터베이스에 씁니다. 이것은 비동기식입니다. 그러나 사용자는 정체된 느낌을 받지 않고 시스템이 귀하의 요청에 응답했음을 알려줄 것입니다. 인터페이스를 닫을 수 있습니다.

[추천 학습: Java 비디오 튜토리얼]

동기화는 결과가 사용자에게 반환되기 전에 모든 작업이 완료된다는 것을 의미합니다. 즉, 데이터베이스에 쓴 후에는 해당 사용자에게 사용자 경험이 좋지 않습니다.

비동기식에서는 사용자 요청에 응답하기 전에 모든 작업이 완료될 때까지 기다릴 필요가 없습니다. 즉, 먼저 사용자 요청에 응답한 다음 천천히 데이터베이스에 쓰므로 더 나은 사용자 경험을 제공합니다.

동기 및 비동기 작업의 예:

1. 동기화:

예를 들어 은행 이체 시스템, 데이터베이스 저장 작업 등은 모두 동기식 대화형 작업을 사용합니다.

2. 비동기식:

단시간에 많은 수의 데이터베이스 작업을 피하기 위해 메시지 대기열인 캐싱 메커니즘이 사용됩니다. 먼저 데이터를 메시지 큐에 넣은 다음 천천히 데이터베이스에 씁니다.

메시지 큐 메커니즘을 도입하면 사용자 요청에 대한 빠른 응답을 보장할 수 있지만 데이터 마이그레이션 시간이 단축되지는 않습니다. 즉, mysql에 80만 개의 데이터를 쓰는 데 1시간이 걸립니다. redis를 사용한 후에도 여전히 1시간이 소요되며 사용자가 http url 요청을 완료한 후 브라우저를 닫고 다른 작업을 수행할 수 있습니다. redis를 사용하지 않으면 브라우저를 닫을 수 없습니다.

위 내용은 Java에서 동기식과 비동기식의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.