1. Tentukan kelas yang mewarisi kelas Thread, mengganti metode run di kelas, memanggil metode start dari objek kelas, metode start memulai thread, dan memanggil metode run. Kelas Thread digunakan untuk mendeskripsikan thread; kelas ini mendefinisikan fungsi yang dijalankan, yang digunakan untuk menyimpan kode yang akan dijalankan oleh thread.
2. Tentukan kelas untuk mengimplementasikan antarmuka Runnable, ganti metode di antarmuka Runnable, buat objek thread melalui kelas Thread, teruskan objek subkelas antarmuka Runnable sebagai parameter aktual ke konstruktor kelas Thread, dan panggil metode awal kelas Thread untuk memulai thread. Metode run di subkelas antarmuka Runnable akan dipanggil;
Cara mengimplementasikan antarmuka Runnable menghindari keterbatasan yang disebabkan oleh warisan tunggal;
benang T;
T.setMaemon(true);//Mengatur thread sebagai thread latar belakang; thread latar belakang secara otomatis berakhir ketika semua thread latar depan berakhir;
T.notify();//Bangun thread ini;
T.notifyAll();//Bangunkan semua thread;
T.interrupt();//utas interupsi;
Thread.sleep(100);//Jeda thread selama 100 milidetik
tersinkronisasi: Secara default, ia mengunci dirinya sendiri, dan objek khusus juga dapat dikunci;
Harus ada dua atau lebih thread yang dijalankan. Beberapa thread menggunakan kunci yang sama. Harus dipastikan bahwa hanya satu thread yang berjalan selama proses sinkronisasi;
Menentukan sinkronisasi: memperjelas kode mana yang memerlukan pengoperasian multi-thread, memperjelas data bersama, dan memperjelas pernyataan mana dalam kode berjalan multi-thread yang beroperasi pada data bersama;
tiket kelas mengimplementasikan Runnable
{
centang int pribadi = 100;
public void run() { // public void run() yang disinkronkan secara publik()
while (centang > 0) {
disinkronkan (ini) {
jika (centang > 0) {
mencoba {
Thread.tidur(100);
} tangkapan (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.toString() + "penjualan:" + centang--);
}
}
}
}
Seperti di atas: tick adalah data yang dibagikan. Untuk mengoperasikan tick, Anda perlu mengoperasikannya secara tersinkronisasi. Kunci yang disinkronkan adalah Tiket itu sendiri;
Mekanisme bangun yang menunggu: Saat mengoperasikan thread sinkronisasi, mereka harus mengidentifikasi kunci yang dipegang oleh thread yang mereka operasikan. Hanya thread yang menunggu di kunci yang sama yang dapat dibangunkan dengan memberi tahu pada kunci yang berbeda tidak dapat dibangunkan ; (yaitu: menunggu dan bangun harus sama kuncinya)