Kami akan memperkenalkan konten kumpulan utas secara detail nanti; Isi bab ini meliputi:
Pengantar Thread dan Runnable
Persamaan dan perbedaan antara utas dan runnable
Contoh multithreading untuk utas dan runnable
Pengantar Thread dan Runnable
Runnable adalah antarmuka yang hanya berisi satu metode run (). Definisi ini adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
antarmuka publik runnable {
public abstrak void run ();
}
Peran runnable, mengimplementasikan multi-threading. Kami dapat mendefinisikan kelas A untuk mengimplementasikan antarmuka yang dapat dilalui;
Thread adalah kelas. Thread sendiri mengimplementasikan antarmuka yang dapat dijalankan. Pernyataannya adalah sebagai berikut:
Thread kelas publik mengimplementasikan runnable {}
Peran utas adalah mewujudkan multi-threading.
Persamaan dan perbedaan antara utas dan runnable
Kesamaan antara utas dan runnable: keduanya adalah "implementasi multi-utas."
Perbedaan antara utas dan runnable:
Thread adalah kelas, dan Runnable adalah antarmuka; Kita tahu bahwa "kelas hanya dapat memiliki satu kelas induk, tetapi dapat menerapkan banyak antarmuka", jadi runnable memiliki skalabilitas yang lebih baik.
Selain itu, Runnable juga dapat digunakan untuk "berbagi sumber daya". Artinya, beberapa utas dibuat berdasarkan objek runnable tertentu, dan mereka akan berbagi sumber daya pada objek yang dapat dilalui.
Secara umum, disarankan untuk menerapkan multi-threading melalui "runnable"!
Contoh multithreading untuk utas dan runnable
1. Contoh Multithreading dari Thread
Di bawah ini kita dapat lebih memahami utas dan dapat dikeluarkan melalui contoh, dan menggambar pada contoh online yang lebih meyakinkan.
Salinan kode adalah sebagai berikut:
// threadtest.java kode sumber
kelas mythread memperluas utas {
tiket int pribadi = 10;
public void run () {
untuk (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (this.getName ()+"Tiket Jual: Tiket"+this.ticket--);
}
}
}
};
ThreadTest kelas publik {
public static void main (string [] args) {
// Mulai 3 utas T1, T2, T3;
Mythread t1 = mythread baru ();
Mythread t2 = mythread baru ();
Mythread t3 = mythread baru ();
t1.start ();
t2.start ();
t3.start ();
}
}
Hasil Menjalankan:
Salinan kode adalah sebagai berikut:
Penjualan Tiket Thread-0: Tiket10
Penjualan Tiket Thread-1: Tiket10
Penjualan Tiket Thread-2: Tiket10
Penjualan Tiket Thread-1: Tiket9
Penjualan Tiket Thread-0: Tiket9
Penjualan Tiket Thread-1: Tiket8
Penjualan Tiket Thread-2: Tiket9
Penjualan Tiket Thread-1: Tiket7
Penjualan Tiket Thread-0: Tiket8
Penjualan Tiket Thread-1: Tiket6
Penjualan Tiket Thread-2: Tiket8
Penjualan Tiket Thread-1: Tiket5
Penjualan Tiket Thread-0: Ticket7
Tiket Thread-1: Ticket4
Penjualan Tiket Thread-2: Ticket7
Penjualan Tiket Thread-1: Tiket3
Penjualan Tiket Thread-0: Tiket6
Penjualan Tiket Thread-1: Tiket2
Penjualan Tiket Thread-2: Tiket6
Deskripsi Hasil:
(01) Mythread mewarisi dari utas, yang merupakan utas khusus. Setiap MyThread menjual 10 tiket.
(02) Utas utama utama membuat dan memulai 3 utas anak Mythread. Setiap utas anak menjual 10 tiket.
2. Contoh multithreaded dari runnable
Selanjutnya, kami memodifikasi program di atas. Menerapkan antarmuka melalui Runnable, dengan demikian menerapkan multi-threading.
Salinan kode adalah sebagai berikut:
// runnableTest.java kode sumber
kelas mythread mengimplementasikan runnable {
tiket int pribadi = 10;
public void run () {
untuk (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (thread.currentThread (). GetName ()+"Tiket Jual: Tiket"+this.ticket--);
}
}
}
};
kelas publik runnableTest {
public static void main (string [] args) {
Mythread mt = mythread baru ();
// Mulai 3 utas T1, T2, T3 (mereka berbagi objek yang dapat dijalankan), dan 3 utas ini menjual total 10 tiket!
Thread t1 = utas baru (mt);
Thread t2 = utas baru (mt);
Thread t3 = utas baru (mt);
t1.start ();
t2.start ();
t3.start ();
}
}
Hasil Menjalankan:
Salinan kode adalah sebagai berikut:
Penjualan Tiket Thread-0: Tiket10
Penjualan Tiket Thread-2: Tiket8
Penjualan Tiket Thread-1: Tiket9
Penjualan Tiket Thread-2: Tiket6
Penjualan Tiket Thread-0: Ticket7
Tiket Thread-2: Ticket4
Penjualan Tiket Thread-1: Tiket5
Tiket Thread-2: Ticket2
Penjualan Tiket Thread-0: Tiket3
Tiket Thread-1: Ticket1
Deskripsi Hasil:
(01) Tidak seperti di atas "Mythread mewarisi dari utas";
(02) Utas utama utama membuat dan memulai 3 utas anak, dan ke -3 utas anak ini semuanya dibuat berdasarkan "MT, objek yang dapat dijalankan". Hasil dari operasi ini adalah bahwa 3 benang anak ini terjual total 10 tiket. Ini berarti mereka berbagi antarmuka MyThread.