Contoh artikel ini menceritakan penggunaan sinkronisasi utas java. Bagikan untuk semua orang untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Penggunaan multi -threading memberikan banyak kenyamanan untuk prosedur kita, dan itu juga membawa kita masalah yang tidak pernah kita pertimbangkan di masa lalu. Ketika kami menggunakan sumber daya bersama multi -endapan, kecelakaan akan terjadi: misalnya, kami pergi makan bersama, semua orang adalah benang, dan makanan di atas meja dibagikan sumber daya. Melihat gol, ketika saya melihatnya, saya tiba -tiba ~~~ kaki ayam menghilang, dan seutas benang lebih dekat ke piring memegangnya dengan bangga.
Untuk menghindari terjadinya masalah di atas, Java memberi kita "Sinkronisasi (Sinkronisasi) pengubah" untuk menghindari konflik sumber daya. Kunci mesin (kunci), yang melekat selama sisa hidupnya dan tidak perlu menulis kode apa pun untuk mengaktifkannya. Ketika kami menyebut fungsi apa pun yang disinkronkan, objek akan dikunci, dan semua fungsi yang disinkronkan dalam objek tidak dapat dipanggil sampai fungsi pertama dieksekusi dan kunci tidak terkunci.
Impor Java.awt.borderlayout; Javax.swing.jtextarea; Akun, Jumlah Setoran Bank ditampilkan oleh Jumlah Setoran Bank untuk Menampilkan Privat Xtarea TextArea = NULL; antarmuka penarikan bank*/ testmain publik () {super ("Tes sinkronisasi utas"); = JTextArea (); ("CLOCK TOWER Sub -BRANCH", MYACCOUNTS, BANK.DEA L_SAVING, 800); Myaccounts, bank.deal_fetch, 200); "Tugen -BRANCH", MyAccounts, Bank.Deal_Fetch, 700);}); SPD (SPD (SP); .EXIT_ON_CLOSE); Fitur*/ Class Bank Extends Thread {/ *** Static Field: Ini digunakan untuk menunjukkan penyimpanan*/ final statis public ke define_saving = 0;/ *** bidang statis: digunakan untuk menunjukkan ekstraksi*/ publik final statis. * @Param myaccounts akun bank saya* @param Beli Perilaku, Referensi Bidang: Dead_saving atau Defer_fetch* @param Nomor Uang*/ Bank Umum (Nama String, MyAccounts MyAccounts, di T Buy, int count) {Super (nama); MyAccounts = myAccounts; Deposit Business $ count = myaccounts.saving (count);} lain jika (beli == bankal_fetch) {// Jika itu adalah bisnis penarikan $ count = myaccounts.fetch (count);} text.setText (integer.toString ($ count )); TextArea. = 1100; Setelah penyelesaian* / public int saving (int c) {disinkronkan (count) {// return count += c; Pertama periksa setoran di akun $ count += c; coba {thread.sleep (thread.sleep (thread.sleep 1000); // Untuk mengamati dengan lebih baik, bisnis berhenti di sini selama 1 detik} catch (interrupted exception ex) {ex.printstacktrace ();} count = $ count; // kembali ke nomor setoran terbaru}/*** Acto Business* @param C untuk menarik uang* @return bisnis setelah selesai*/int fetch publik (int c) {Sinkronisasi (Count) {// return countt -= c; C; Nomor setoran}}} public static void main (string [] args) {new testmain5 ();}}Diharapkan bahwa artikel ini bermanfaat untuk desain program Java semua orang.