Rumah > Java > javaTutorial > Penyegerakan Statik dalam Java

Penyegerakan Statik dalam Java

WBOY
Lepaskan: 2024-08-30 15:59:04
asal
855 orang telah melayarinya

Pelaksanaan utas menjadi pelaksanaan satu utas untuk setiap contoh jika kaedah contoh itu disegerakkan tetapi apabila terdapat lebih daripada sekali contoh kelas yang sama, ia menjadi masalah yang memerlukan penyegerakan pada peringkat kelas untuk menyediakan hanya satu kunci untuk semua contoh kelas daripada mempunyai penyegerakan pada peringkat objek dan ini dipanggil penyegerakan statik dalam Java yang boleh dilakukan dalam dua cara, satu adalah dengan mempunyai kaedah disegerakkan statik dan satu lagi mempunyai blok disegerakkan kod dalam kaedah statik.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks

Sintaks adalah seperti berikut:

synchronized static return_type class_name{}
Salin selepas log masuk

di mana jenis pulangan ialah jenis nilai yang dikembalikan daripada kelas dan nama_kelas ialah nama kelas.

Bagaimanakah Penyegerakan Statik berfungsi dalam Java?

Setiap contoh kelas mempunyai kunci pada objek kelas di Jawa. Jika mana-mana kaedah statik dibuat disegerakkan, maka kunci itu bukan pada objek kelas, tetapi ia berada pada kelas itu sendiri. Katakan, terdapat dua objek kelas yang dipanggil obj1 dan obj2 dan benang t1 dan t2 beroperasi pada objek obj1. Begitu juga, benang t3 dan t4 beroperasi pada objek obj2. Jika blok kod atau kaedah dibuat disegerakkan, tiada gangguan boleh berlaku antara benang t1 dan t2 kerana kedua-dua benang t1 dan t2 merujuk kepada objek obj1 yang sama yang mempunyai kunci tunggal. Begitu juga, tiada gangguan boleh berlaku antara benang t3 dan t4 kerana kedua-dua benang t3 dan t4 merujuk kepada objek yang sama obj2 yang mempunyai kunci tunggal.

Tetapi gangguan boleh berlaku antara benang t1 dan t3 kerana kedua-dua benang t1 dan t3 telah memperoleh objek berbeza dengan kunci berbeza. Begitu juga, gangguan boleh berlaku di antara benang t2 dan t4 kerana kedua-dua benang t2 dan t4 telah memperoleh objek yang berbeza dengan kunci yang berbeza. Kami tidak mahu mempunyai sebarang gangguan antara mana-mana benang dan masalah ini boleh diselesaikan dengan menggunakan Penyegerakan Statik di Jawa. Objek kelas dicipta oleh Mesin Maya Java apabila pemuatan kelas berlaku buat kali pertama. Kelas yang sama tidak akan dimuatkan lagi selepas pemuatan kelas berlaku buat kali pertama. Contoh kelas dicipta untuk setiap kelas yang dimuatkan, oleh Mesin Maya Java. Kejadian kelas ini dipanggil objek dan penyegerakan objek boleh dilakukan menggunakan Penyegerakan Statik dalam Java.

Contoh untuk Melaksanakan Penyegerakan Statik dalam Java

Di bawah ialah contoh:

Contoh #1

Program untuk menunjukkan Penyegerakan Statik dalam Java:

Kod:

//a class called check is defined
class check
{
// a method called Line is define and only one thread will be able to access this method at once because it is synchronized
synchronized public void Line()
{
//a for loop is defined to loop from values 0 to 3
for (int r = 1; r <5; r++)
{
System.out.println(r);
try
{
Thread.sleep(390);
}
catch (Exception ex)
{
System.out.println(ex);
}
}
}
}
//a class called Trap is defend which extends a thread of the class
class Trap extends Thread
{
//a variable of the class check is defined
check line1;
//a constructor of the class trap is defined with check class variable
Trap(check line1)
{
this.line1 = line1;
}
//the standard run method is overridden
public void run()
{
line1.Line();
}
}
//a class called program is defined
public class program
{
//main method is called
public static void main(String[] args)
{
//an instance of the class check is defined
check object = new check();
// two threads of the class trap is created and they share the same object
Trap tra1 = new Trap(object);
Trap tra2 = new Trap(object);
//Beginning the execution of two threads
tra1.start();
tra2.start();
}
}
Salin selepas log masuk

Output:

Penyegerakan Statik dalam Java

Penjelasan: Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah yang dipanggil Line ditakrifkan dan hanya satu thread akan dapat mengakses kaedah ini sekaligus kerana ia disegerakkan. Kemudian gelung for ditakrifkan kepada gelung daripada nilai 0 hingga 3. Kemudian kelas yang dipanggil Trap ialah defend yang memanjangkan satu utas kelas. Kemudian pembolehubah semakan kelas ditakrifkan. pembina perangkap kelas ditakrifkan dengan pembolehubah kelas semak sebagai parameter. Kemudian kaedah larian standard ditindih. Kemudian kelas yang dipanggil program ditakrifkan. Kemudian kaedah utama dipanggil. Kemudian contoh semakan kelas ditakrifkan. Kemudian dua utas perangkap kelas, tra1 dan tra2 dicipta dan mereka berkongsi objek yang sama. Kemudian pelaksanaan dua utas tra1 dan tra2 bermula dengan cara yang pelaksanaan satu utas tidak mengganggu pelaksanaan utas lain atau pelaksanaan satu utas tidak mengunci pelaksanaan utas lain. Output program adalah seperti yang ditunjukkan dalam syot kilat di atas.

Kelebihan Penyegerakan Statik dalam Java

Terdapat beberapa kelebihan. Mereka ialah:

  • Masalah ketidakkonsistenan data boleh diselesaikan menggunakan Penyegerakan Statik dalam Java.
  • Dengan menggunakan Penyegerakan Statik dalam Java, objek boleh diakses oleh hanya satu utas pada titik masa tertentu. Objek yang hendak diakses oleh hanya satu utas mesti diisytiharkan dengan kata kunci disegerakkan.
  • Konkurensi benang yang berbeza dan proses yang berbeza boleh diurus dengan menggunakan Penyegerakan Statik dalam Java. Iaitu dua atau lebih utas, atau dua atau lebih proses boleh dilaksanakan secara serentak pada masa yang sama memastikan satu utas tidak mengunci atau mengganggu pelaksanaan utas lain.

Kesimpulan

Dalam tutorial ini, kami memahami konsep Penyegerakan Statik dalam Java melalui definisi, sintaks untuk mengisytiharkan penyegerakan statik dalam Java, kerja Penyegerakan Statik dalam java melalui contoh dan outputnya serta kelebihan penyegerakan statik dalam java.

Atas ialah kandungan terperinci Penyegerakan Statik dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan