Contoh ini berbagi tiga cara untuk mengimplementasikan multi-threading di Java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Impor java.util.concurrent.callable; import java.util.concurrent.futuretask; kelas publik utama {public static void main (string [] args) {// metode 1: waris utas int i = 0; // for (; i <100; i ++) {// System.out.printlln (; ); // if (i == 5) {// threadextendsthread threadextendsthread = new threadextendSthread (); // threadextendsthread.start (); //} //} // Metode 2: implement runnable // for (i = 0; i <100; i ++) {// System.out.printll (i = 0; i <100; i ++) {// System.out.out.printll (i = 0; i <100; i ++) {// System.out.out.printlln (iPrintl (i = 0; i); // if (i == 5) {// runnable runnable = new threadImplementsrunnable (); // thread baru (runnable) .start (); //} //} // metode 3: terapkan antarmuka yang dapat dipanggil <Integer> callable = new threadImlementsclableable (); Futuretask <Integer> futuretask = futuretask baru <> (dapat dipanggil); untuk (i = 0; i <100; i ++) {System.out.println (thread.currentThread (). getName () + "" + i); if (i == 5) {utas baru (futureTask) .start (); utas baru (futuretask) .start (); }} coba {System.out.println ("Futuretask Ruturn:" + futureTask.get ()); } catch (Exception e) {E.PrintStackTrace (); }}} Metode 1, mewarisi dari utas
Public Class ThreadextendSthread memperluas Thread {private int i; @Override public void run () {for (; i <100; i ++) {System.out.println (getName () + "" + i); }}}Metode RUN adalah badan eksekusi utas, dan objek ThreadextendSthread adalah objek utas.
Metode 2: Menerapkan antarmuka Runnable
Public Class ThreadImplementsRunnable mengimplementasikan Runnable {private int i; @Override public void run () {for (; i <100; i ++) {System.out.println (thread.currentThread (). GetName () + "" + i); }}}Metode jalankan adalah badan eksekusi utas. Saat menggunakannya, objek utas adalah baru, dan objek yang dapat dijalankan diteruskan ke objek utas sebagai target. Dan objek runnable yang sama dapat digunakan sebagai target untuk beberapa utas, dan utas ini berbagi variabel instance dari objek runnable.
Metode 3: Menerapkan antarmuka yang dapat dipanggil
Impor java.util.concurrent.callable; Public Class ThreadImplementScallable mengimplementasikan Callable <Integer> {private int i; @Override Public Integer Call () melempar Exception {for (; i <100; i ++) {System.out.println (thread.currentThread (). GetName () + "" + i); } return i; }}Antarmuka yang dapat dipanggil mirip dengan antarmuka yang dapat dijalankan, tetapi lebih kuat dari pihak lain. Badan eksekusi utas adalah metode panggilan, yang memiliki nilai pengembalian dan dapat melemparkan pengecualian. Saat digunakan, bungkus objek yang dapat dipanggil sebagai objek futuretask, tentukan jenis nilai pengembalian melalui obat generik. Anda dapat memanggil metode GET Futuretask untuk mengambil hasil eksekusi.
Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.