Coroutine Java ditakrifkan sebagai satu set arahan yang dihantar ke komputer dengan membungkusnya sebagai satu unit untuk menyamaratakan tugas khusus yang akan dilakukan dengan gaya berbilang tugas di mana tiada suis daripada proses berjalan ke proses lain dan sebaliknya menjalankannya secara serentak sebagai multi-tasking koperasi. Arahan ini dilaksanakan dengan membenarkannya digantung dan disambung semula. Kami agak biasa dengan genre program yang ditulis melalui rutin bersama, tugas koperasi, gelung acara, iterator, paip, dll. Walau bagaimanapun, seseorang biasanya keliru tentang konsep coroutine berkenaan dengan konsep lain seperti subrutin, benang, penjana , rekursi bersama.
IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks Java Coroutines
Diberikan di bawah ialah sintaks yang disebut:
1. Memasukkan tanggungan dalam POM.
<dependency> <groupId> {package name goes here} </groupId> <artifactId> {artifact ID goes here} </artifactId> <version> {version number goes here} </version> </dependency>
2. Mengisytiharkan tika kelas coroutine.
public static final class < Class name goes here > implements Coroutine
3. Gantikan pelaksanaan pada kelas induk.
@Override
4. Mengisytiharkan Coroutines melalui com.offbynull.coroutines.
CoroutineRunnerr = new CoroutineRunner(new <class name> ());
Sebelum kita melihat tentang coroutine di Jawa, mari kita lihat cara yang berbeza untuk melaksanakan yang sama kerana cara yang berbeza akan menentukan kerja coroutine di Jawa tulen. Sebenarnya, terdapat beberapa sekatan yang dikenakan oleh abstraksi Java, tetapi pelaksanaannya tidak berhenti daripada dilaksanakan.
Diterima secara meluas, terdapat 4 kaedah yang menjaga pelaksanaan coroutine.
Coroutine ialah utas ringan yang dijalankan dengan berkongsi urutan sedia ada dan bukannya mempunyai utas sistem khusus untuk diri mereka sendiri. Cara kerjasama ini berjalan dengan berkongsi dan memastikan bahawa utas yang dikongsi tidak diduduki lebih daripada yang diperlukan. ForkJoinTask dalam Java 7 dan CompletableFuture dalam Java 8 menyediakan sokongan eksplisit mengenai pelaksanaan utas dikongsi. Kini, jika coroutine digantung untuk masa yang tidak ditentukan, tiada sumber pengiraan digunakan dan boleh menyambung semula pelaksanaan hanya apabila sumber yang ditunggu tersedia.
Tugas pertama kita ialah mengisytiharkan coroutine. Terdapat kekurangan mekanisme asli untuk mengisytiharkan sebarang objek yang termasuk penggantungan; satu-satunya cara ialah dengan melaksanakannya melalui API. Ia boleh diisytiharkan sebagai contoh coroutine kelas, dan esoco GmBH menyediakan kaedah Coroutine.first( ) untuk menggunakan tika coroutine baharu. Sebagai alternatif, seseorang boleh memanggil contoh pembina untuk melaksanakan tugas yang sama. Menggunakan Coroutine.then( ) pengguna boleh menyediakan kefungsian tambahan untuk pelengkap. Satu lagi sifat utama coroutine ialah ia tidak boleh diubah dan urutan langkah seperti yang ditakrifkan tidak boleh diubah.
Menggunakan CoroutineWriter dan CoroutineReader, coroutine boleh bersiri atau dinyahsiri. Fungsi bersiri terbina dalam Java digunakan secara lalai, dan keadaan coroutine dibuat menggunakan itu. Selain itu, terdapat pelaksanaan tersuai untuk mengawal lebih lanjut penyirian atau penyahserilan dan diserahkan kepada CoroutineWriter dan CoroutineReader untuk menambah dalam format penyiaran yang berbeza seperti XML, JSON atau penyiri yang berbeza seperti XStream, Kryo, Jackson dll.
Siri ialah ciri lanjutan, dan kebiasaan kod bait JVM amat disyorkan. Konsep siri membolehkan penukaran coroutine kepada tatasusunan bait dan kembali daripada tatasusunan bait.
Kes penggunaan tipikal untuk bersiri ialah:
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.
Atas ialah kandungan terperinci Java Coroutines. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!