Java:使用匿名内部类在方法内部定义并启动线程
下面的代码展示了在一个方法中,通过匿名内部类定义一个Thread,并Override它的run()方法,之后直接启动该线程。
这样的代码可用于在一个类内部通过另起线程来执行一个支线任务,一般这样的任务并不是该类的主要设计内容。
package com.zj.concurrency; public class StartFromMethod { private Thread t; private int number; private int count = 1; public StartFromMethod(int number) { this.number = number; } public void runTask() { if (t == null) { t = new Thread() { public void run() { while (true) { System.out.println("Thread-" + number + " run " + count + " time(s)"); if (++count == 3) return; } } }; t.start(); } } public static void main(String[] args) { for (int i = 0; i < 5; i++) new StartFromMethod(i).runTask(); } }
结果:
Thread-0 run 1 time(s)
Thread-0 run 2 time(s)
Thread-1 run 1 time(s)
Thread-1 run 2 time(s)
Thread-2 run 1 time(s)
Thread-2 run 2 time(s)
Thread-3 run 1 time(s)
Thread-3 run 2 time(s)
Thread-4 run 1 time(s)
Thread-4 run 2 time(s)
更多Java:使用匿名内部类在方法内部定义并启动线程相关文章请关注PHP中文网!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kelas dalaman tanpa nama boleh menyebabkan kebocoran memori Masalahnya ialah mereka memegang rujukan kepada kelas luar, menghalang kelas luar daripada dikumpul. Penyelesaian termasuk: 1. Gunakan rujukan yang lemah Apabila kelas luar tidak lagi dipegang oleh rujukan yang kuat, pemungut sampah akan segera mengitar semula objek rujukan yang lemah memerlukan ingatan semasa pengumpulan sampah Hanya kemudian objek rujukan lembut dikitar semula. Dalam pertempuran sebenar, seperti dalam aplikasi Android, masalah kebocoran memori yang disebabkan oleh kelas dalaman tanpa nama boleh diselesaikan dengan menggunakan rujukan yang lemah, supaya kelas dalaman tanpa nama boleh dikitar semula apabila pendengar tidak diperlukan.

Kelas dalaman tanpa nama ialah kelas dalaman khas dalam Java yang tidak mempunyai nama eksplisit dan dicipta melalui ungkapan baharu Ia digunakan terutamanya untuk melaksanakan antara muka tertentu atau melanjutkan kelas abstrak dan digunakan serta-merta selepas penciptaan. Corak reka bentuk kelas dalaman tanpa nama biasa termasuk: Corak penyesuai: menukar satu antara muka kepada antara muka yang lain. Corak Strategi: Mentakrifkan dan Menggantikan Algoritma. Corak pemerhati: Daftar pemerhati dan kendalikan peristiwa. Ia sangat berguna dalam aplikasi praktikal, seperti menyusun TreeSet mengikut panjang rentetan, mencipta benang tanpa nama, dsb.

Kelas dalaman tanpa nama digunakan di Java sebagai kelas dalaman khas yang memudahkan subkelas, memudahkan kod dan mengendalikan acara (seperti klik butang). Kes praktikal termasuk: Pengendalian acara: Gunakan kelas dalaman tanpa nama untuk menambah pendengar acara klik untuk butang. Transformasi data: Isih koleksi menggunakan kaedah Collections.sort dan kelas dalaman tanpa nama sebagai pembanding.

Kelas dalaman tanpa nama tidak sesuai digunakan apabila: perlu mengakses ahli persendirian, memerlukan berbilang contoh, memerlukan warisan, perlu mengakses jenis generik

Ralat penggunaan kelas dalaman tanpa nama: Mengakses pembolehubah di luar skop menggunakan menangkap pengecualian yang tidak diisytiharkan dalam persekitaran bukan benang selamat

Masalah prestasi kelas dalaman tanpa nama ialah ia dicipta semula setiap kali ia digunakan, yang boleh dioptimumkan melalui strategi berikut: 1. Simpan kelas dalaman tanpa nama dalam pembolehubah tempatan 2. Gunakan kelas dalaman bukan statik; ungkapan. Ujian praktikal menunjukkan bahawa pengoptimuman ekspresi lambda mempunyai kesan terbaik.

Jangka hayat kelas dalam tanpa nama ditentukan oleh skopnya: Kaedah-kelas dalam tempatan: Sah hanya dalam skop kaedah yang menciptanya. Kelas dalaman pembina: terikat kepada contoh kelas luar dan dikeluarkan apabila tika kelas luar dikeluarkan. Kelas dalaman statik: dimuatkan dan dipunggah pada masa yang sama dengan kelas luaran.

Kelas dalaman tanpa nama memudahkan penciptaan kod berbilang benang, menghapuskan keperluan untuk menamakan dan mendayakan definisi segera dan penggunaan kelas benang. Kelebihan utama adalah untuk memudahkan kod, manakala hadnya ialah ia tidak boleh dilanjutkan. Gunakan apabila anda perlu membuat satu atau dua benang dengan cepat. Jika logik yang lebih kompleks diperlukan, fail kelas yang berasingan harus dibuat.
