Java 코루틴은 실행 중인 프로세스에서 프로세스로 전환되지 않는 멀티태스킹 스타일로 수행할 특정 작업을 일반화하기 위한 단위로 패키징하여 컴퓨터에 전송되는 명령 집합으로 정의됩니다. 다른 프로세스를 대신하여 협동 멀티 태스킹으로 동시에 실행합니다. 이러한 명령어는 일시 중지 및 재개를 허용하여 실행됩니다. 우리는 코루틴, 협동 작업, 이벤트 루프, 반복자, 파이프 등을 통해 작성된 프로그램 장르에 대해 잘 알고 있습니다. 그러나 일반적으로 서브루틴, 스레드, 생성기와 같은 다른 개념과 관련하여 코루틴의 개념에 대해 혼동합니다. , 상호 재귀.
광고 이 카테고리에서 인기 있는 강좌 JAVA MASTERY - 전문 분야 | 78 코스 시리즈 | 15가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
Java 코루틴 구문
다음은 언급된 구문입니다.
1. POM에 종속성을 입력합니다.
<dependency> <groupId> {package name goes here} </groupId> <artifactId> {artifact ID goes here} </artifactId> <version> {version number goes here} </version> </dependency>
2. 코루틴의 클래스 인스턴스 선언.
public static final class < Class name goes here > implements Coroutine
3. 상위 클래스의 구현을 재정의합니다.
@Override
4. com.offbynull.coroutines를 통해 코루틴을 선언합니다.
CoroutineRunnerr = new CoroutineRunner(new <class name> ());
Java의 코루틴에 대해 알아보기 전에 이를 구현하는 다양한 방법을 살펴보겠습니다. 다양한 방법에 따라 순수 Java에서 코루틴의 작동이 결정됩니다. 실제로 Java의 추상화에 의해 부과되는 몇 가지 제한 사항이 있지만 구현은 구현을 멈추지 않습니다.
널리 받아들여지는 코루틴 구현에는 4가지 방법이 있습니다.
코루틴은 전용 시스템 스레드를 보유하는 대신 기존 스레드를 공유하여 실행되는 경량 스레드입니다. 공유 스레드가 필요 이상으로 점유되지 않도록 공유하여 실행하는 협력적인 방식입니다. Java 7의 ForkJoinTask와 Java 8의 CompletableFuture는 공유 스레드 실행과 관련된 명시적인 지원을 제공합니다. 이제 코루틴이 불확실한 시간 동안 일시 중지되면 컴퓨팅 리소스가 활용되지 않으며 대기 중인 리소스를 사용할 수 있는 경우에만 실행을 재개할 수 있습니다.
우리의 첫 번째 작업은 코루틴을 선언하는 것입니다. 정지를 포함하는 개체를 선언하는 기본 메커니즘이 부족합니다. 유일한 방법은 API를 통해 구현하는 것입니다. 코루틴 클래스의 인스턴스로 선언할 수 있으며, esoco GmBH에서는 새로운 코루틴 인스턴스를 호출하기 위해 Coroutine.first() 메서드를 제공합니다. 또는 생성자 인스턴스를 호출하여 동일한 작업을 수행할 수 있습니다. Coroutine.then( )을 사용하면 사용자는 보완을 위한 추가 기능을 제공할 수 있습니다. 코루틴의 또 다른 주요 특징은 변경할 수 없으며 정의된 단계의 순서를 변경할 수 없다는 것입니다.
CoroutineWriter 및 CoroutineReader를 사용하면 코루틴을 직렬화하거나 역직렬화할 수 있습니다. 기본적으로 Java에 내장된 직렬화 기능이 사용되며, 이를 이용하여 코루틴의 상태가 구성됩니다. 그 외에도 직렬화 또는 역직렬화를 추가로 제어하고 XML, JSON과 같은 다양한 직렬화 형식 또는 XStream, Kryo, Jackson 등과 같은 다양한 직렬 변환기를 추가하기 위해 CoroutineWriter 및 CoroutineReader에 전달되는 사용자 정의 구현이 있습니다.
직렬화는 고급 기능이므로 JVM 바이트 코드에 익숙할 것을 적극 권장합니다. 직렬화 개념을 사용하면 코루틴을 바이트 배열로 변환하고 다시 바이트 배열로 변환할 수 있습니다.
직렬화의 일반적인 사용 사례는 다음과 같습니다.
Another derivative of serialization is the versioning which enables developers to change the logic of coroutine along side still being able to load data using serialization from earlier versions.
Given below are the examples of Java Coroutines:
A “Hello World” type example coroutines.
Syntax:
public static final class CoroutineDemo implements Coroutine { @Override public void run(Continuation c) { System.out.println("Start of Main stream "); for (int i = 0; i < 10; i++) { echo(c, i); } } private void echo(Continuation c, int x) { System.out.println(x); c.suspend(); } } CoroutineRunner runnerVar = new CoroutineRunner(new CoroutineDemo()); runnerVar.execute(); runnerVar.execute(); runnerVar.execute(); runnerVar.execute();
Output:
Forking of an object.
Syntax:
public final class CoroutineDemo implements Coroutine { @Override public void run(Continuation c) { System.out.println("Start of Main stream"); for (int i = 0; i < 10; i++) { echo(c, i); } } private void echo(Continuation c, int x) { System.out.println(x); c.suspend(); } } CoroutineRunner runner1 = new CoroutineRunner(new CoroutineDemo()); runner1.execute(); byte[] dumped = new CoroutineWriter().write(runner1); CoroutineRunner runner2 = new CoroutineReader().read(dumped); runner1.execute(); runner2.execute(); runner1.execute(); runner2.execute(); runner1.execute(); runner2.execute();
Output:
Through this article, we have looked at the working of Java coroutines. First, one needs to make sure that the POM and details of the maven build are properly instantiated and the build is done. With the different use case of a simple one and the forking, we are able to understand how 2 variables carry the information and if something gets updated in the root, the same thing is reflected back into the fork as well through serialization.
위 내용은 자바 코루틴의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!