Artikel ini memperkenalkan dua belenggu untuk implementasi multi-threading dari beberapa masalah tiket jendela, yaitu disinkronkan, lock () dan buka kunci ()
Kode spesifiknya adalah sebagai berikut:
Tipe pertama:
paket runnable; impor java.util.concurrent.locks.lock; impor java.util.concurrent.locks.reentrantlock; / * * Sinkronisasi * Ada dua cara untuk mengunci * di sini: * 1.synchronized * 2.lock () dan buka () */ kelas publik MyRunnable mengimplementasikan runnable {private int ticket = 100; // Tentukan kunci kunci pribadi terkunci = reentrantlock baru (); public void run () {while (true) {// lock lock.lock (); if (tiket> 0) {coba {thread.sleep (100); } catch (InterruptedException E) {// TODO Auto-Encanerated Catch Block E.PrintStackTrace (); } System.out.println (thread.currentThread (). GetName () + "dijual" + (tiket--) + "tiket"); } lock.unlock (); }}}hasil:
Tipe kedua:
paket runnable; / * * Disinkronkan * Ada dua cara untuk mengunci * di sini: * 1.synchronized * 2.lock () dan buka () */ kelas publik MyRunnable mengimplementasikan runnable {private int ticket = 100; public void run () {while (true) {disinkronkan (this) {if (tiket> 0) {coba {thread.sleep (100); } catch (InterruptedException E) {// TODO Auto-Encanerated Catch Block E.PrintStackTrace (); } System.out.println (thread.currentThread (). GetName () + "dijual" + (tiket--) + "tiket"); }}}}}hasil:
paket runnable; kelas publik runnableDeMo {public static void main (string [] args) {myrunnable myrunnable = new myrunnable (); Thread t1 = utas baru (myRunnable, "window one"); Thread t2 = utas baru (myRunnable, "window two"); Thread t3 = utas baru (myRunnable, "window tiga"); t1.start (); t2.start (); t3.start (); }}Saya tidak tahu apakah itu kebetulan atau semacamnya, tetapi ketika saya menjalankan dua contoh kecil multi-threaded ini, komputer tiba-tiba macet dan saya dengan cepat mematikan gerhana.
Ada pernyataan tentang mengakhiri proses dan belum ditambahkan, silakan merujuknya sendiri.
Di atas adalah seluruh konten dari artikel ini tentang contoh masalah tiket java multi-threaded. Saya berharap ini akan membantu untuk penumpasan. Jika Anda memiliki pertanyaan, silakan tinggalkan pesan kapan saja dan nantikan komentar berharga Anda.