Tiga cara untuk mengimplementasikan multi-threading di Java
Di Java, ada tiga cara untuk mengimplementasikan multi-threading. Metode pertama: mewarisi kelas utas dan mengganti fungsi run. Metode kedua: Menerapkan antarmuka runnable dan menulis ulang fungsi run. Metode ketiga: Menerapkan antarmuka yang dapat dipanggil dan mengganti fungsi panggilan. Artikel ini akan menjelaskan bagaimana ketiga metode ini dapat diimplementasikan melalui contoh. Jika Anda membutuhkannya, silakan merujuknya.
(1) mewarisi kelas utas dan mengesampingkan fungsi run.
Class XX Extends Thread {public void run () {thread.sleep (1000) // Thread tidur selama 1000 milidetik, tidur menyebabkan utas memasuki status blok dan melepaskan sumber daya}} Mulai utas:
Object.start () // Mulai utas, jalankan fungsi run
(2) Menerapkan antarmuka runnable, kode ini adalah sebagai berikut
kelas myThread mengimplementasikan runnable {private string name; mythread publik (nama string) {super (); this.name = name; } @Override public void run () {for (int i = 0; i <200; i ++) {System.out.println ("Thread"+Name+"--->"+i); }}} kelas publik threadDemo {public static void main (string [] args) {mythread a = mythread baru ("a"); Mythread b = mythread baru ("b"); Mythread c = mythread baru ("c"); utas baru (a) .start (); utas baru (b) .start (); utas baru (c) .start (); }}(3) Menerapkan antarmuka yang dapat dipanggil dan mengganti fungsi panggilan
Callable adalah antarmuka yang mirip dengan Runnable. Kelas -kelas yang mengimplementasikan antarmuka yang dapat dipanggil dan kelas -kelas yang mengimplementasikan tugas yang dapat dijalankan adalah tugas yang dapat dieksekusi oleh utas lain.
Ada beberapa perbedaan antara Callable dan Runnable:
Java Callable Code Contoh:
Class TaskWithResult mengimplementasikan Callable <string> {private int id; TaskWithResult (int id) {this.id = id; } @Override public string call () melempar Exception {return "hasil TaskWithResult" + id; }} kelas publik callabletest {public static void main (string [] args) melempar interruptedException, executionException {executorservice exec = executors.newCachedThreadPool (); ArrayList <Future <string>> result = new ArrayList <Future <String> (); // Masa depan setara dengan wadah yang digunakan untuk menyimpan hasil eksekusi pelaksana untuk (int i = 0; i <10; i ++) {results.add (exec.submit (TaskWithResult (i))); } untuk (Future <string> fs: hasil) {if (fs.isdone ()) {System.out.println (fs.get ()); } else {System.out.println ("Hasil masa depan belum lengkap"); }} exec.shutdown (); }}Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!