Video: Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks 2024
Untuk thread yang memicu peristiwa undur khusus seperti membanjiri pad pelancaran, memulakan acara, dan mengangkat, anda boleh membuat satu lagi kelas Java yang dikenali sebagai LaunchEvent. Kelas ini menggunakan teknik lain untuk membuat dan memulakan thread - yang memerlukan beberapa baris kod tetapi lebih fleksibel.
Masalah dengan membuat kelas yang memanjangkan kelas Thread ialah kelas boleh mempunyai satu superclass. Bagaimana jika anda lebih suka mempunyai objek thread anda memanjangkan kelas lain? Dalam hal ini, anda boleh membuat kelas yang mengimplementasikan antara muka Runnable dan bukannya melanjutkan kelas Thread.
Antara muka Runnable menandakan objek yang boleh dijalankan sebagai thread. Ia hanya mempunyai satu kaedah, jalankan, yang mengandungi kod yang dilaksanakan dalam benang. (Kelas Thread sendiri melaksanakan Runnable, itulah sebabnya kelas Thread mempunyai kaedah run.)
Untuk menggunakan antara muka Runnable untuk membuat dan memulakan thread, anda perlu melakukan yang berikut:
-
Buat kelas yang mengimplementasikan Runnable.
-
Menyediakan kaedah larian dalam kelas Runnable.
-
Buat contoh kelas Thread dan lulus objek Runnable anda kepada pembinanya sebagai parameter.
Satu objek Thread dicipta yang boleh menjalankan kelas Runnable anda.
-
Panggil kaedah permulaan objek Thread.
Kaedah menjalankan objek Runnable anda dipanggil dan dilaksanakan dalam benang yang berasingan.
Dua langkah pertama adalah mudah. Caranya ialah dalam langkah ketiga dan keempat, kerana anda boleh menyelesaikannya dalam beberapa cara. Berikut adalah satu cara, dengan mengandaikan bahawa kelas Runnable anda dinamakan RunnableClass:
RunnableClass rc = RunnableClass baru (); Thread t = Thread baru (rc); t. mulakan ();
Pengaturcara Java suka dengan ringkas, jadi anda sering melihat kod ini dimampatkan dengan sesuatu yang lebih seperti
Thread t = Thread baru (baru RunnableClass ()); t. mulakan ();
atau sekadar ini:
Thread baru (RunnableClass baru ()). mulakan ();
Versi satu talian ini berfungsi - dengan syarat anda tidak perlu mengakses objek thread kemudian dalam program ini.