Java 비동기 작업 구현 및 분석
1. 비동기 작업이란
실생활에서든 프로그램에서든 크게 동기식과 비동기식의 두 가지 유형으로 나눌 수 있습니다.
동기화: 예를 들어 하이디라오를 먹으러 가면 냄비 바닥을 먼저 주문한 다음 접시를 주문하고 웨이터가 냄비 바닥을 가져온 다음 접시를 가져오고 마지막으로 접시를 먹을 수 있습니다. . 이 과정은 순서대로 이루어져야 합니다.
비동기 작업: 하이디라오 먹으러 가세요. 식사하는 사람이 많아요. 앞에 사람이 많아서 줄을 서서 기다려야 할 수도 있습니다. 그런데 도중에 화장실에 가고 싶다면 돌아올 때 다시 줄을 서야 합니다. 그래서 전화 시스템이 있습니다. 먼저 전화번호를 받기 위해 줄을 서서 마사지를 받고, 영화를 보고, 스파에 가고, 밀크티 한 잔을 사면 됩니다. 드디어 당신의 차례가 되었는데, 이때 줄을 서 있다는 알림을 받은 후 입장할 수 있습니다. 이 프로세스는 비동기식입니다. 2. SpringBoot + Async
처음에는 스레드 풀을 열고 작업을 스레드 풀에 던져 완료하려고 생각했습니다.
나중에 SpringBoot에는 더 편리한 비동기 프레임워크 Async가 있다는 것을 기억했습니다
코드도 매우 간단합니다. 비동기 실행이 필요한 메서드에 @Async를 추가하고 SpringBoot 시작 클래스에 @EnableAsync를 추가하기만 하면 됩니다
1 2 3 4 |
|
3. Step Pitfall Diary
코드의 양이 작아도 코드 양이 줄어든다고 해서 Pitfall은 줄어들지 않습니다.
편의를 위해 로컬 데모를 구축하고 코드를 직접 입력했습니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
동기 실행용과 비동기 실행용 /v1/say 및 /v2/say 두 가지 인터페이스를 제공하는 매우 간단한 데모입니다. 3초 동안 시간이 많이 걸리는 작업을 시뮬레이션합니다.
정상적으로 시작합니다. 동기적으로 실행하면 3초 동안 기다렸다가 비동기적으로 실행하면 즉시 반환됩니다. 중단점 이후에 추가하면 문제가 발생했습니다.
먼저 hello world를 인쇄하는 라인에 중단점을 추가했습니다. 인쇄 전에 차단된다는 점을 제외하면 효과는 원본과 동일하지만 메인 스레드의 반환에는 영향을 미치지 않습니다.
Edit그런데 메소드가 들어오는 곳에 중단점을 추가했더니 실제로는 메인 스레드가 차단된 걸 발견했어요!
4. 해결
다양한 문제 해결, @Async가 적용되지 않음, 비동기 작업이 기본 스레드가 반환될 때까지 기다리며 효과적인 솔루션을 찾지 못했습니다.
나중에 동료가 디버그 기능에 의해 차단된 스레드일 수 있다고 상기시켜 주었습니다.
한번 해보자는 마음으로 디버그 구성을 찾았습니다
Edit중단점은 jvm을 차단하거나 현재 스레드를 차단하도록 선택할 수 있습니다. 기본값은 jvm을 차단하는 것입니다.
스레드를 일시 중단으로 선택하면 메인 스레드가 더 이상 차단되지 않습니다
위 내용은 Java 비동기 작업 구현 및 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP가 많은 웹 사이트에서 선호되는 기술 스택 인 이유에는 사용 편의성, 강력한 커뮤니티 지원 및 광범위한 사용이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 거대한 개발자 커뮤니티와 풍부한 자원이 있습니다. 3) WordPress, Drupal 및 기타 플랫폼에서 널리 사용됩니다. 4) 웹 서버와 밀접하게 통합하여 개발 배포를 단순화합니다.

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.

H5 개발에서 마스터 해야하는 도구 및 프레임 워크에는 vue.js, React 및 Webpack이 포함됩니다. 1.vue.js는 사용자 인터페이스를 구축하고 구성 요소 개발을 지원하는 데 적합합니다. 2. 복잡한 응용 프로그램에 적합한 가상 DOM을 통해 페이지 렌더링을 최적화합니다. 3. Webpack은 모듈 포장에 사용되며 리소스로드를 최적화합니다.
