Jadual Kandungan
总结:
Rumah Java javaTutorial synchronized使用的四个方法介绍

synchronized使用的四个方法介绍

Oct 08, 2018 pm 03:16 PM
synchronized

本篇文章给大家带来的内容是关于synchronized使用的四个方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1.修饰一个方法
synchronized 修饰一个方法很简单,就是在方法的前面加synchronized,例如:

public synchronized void method()
{
   // todo
}
Salin selepas log masuk

在定义接口方法时不能使用synchronized关键字。
构造方法不能使用synchronized关键字,但可以使用synchronized代码块来进行同步。
synchronized 关键字不能被继承 ,如果要同步需要显式的加上关键字。
synchronized 关键字修饰的方法如果被重写默认不同步,如果要同步需要显式的加上关键字,或者super父类的方法也就相当于同步了。

2.修饰代码块

public  void method()
{
   synchronized(this)
   synchronized(XX.class)
}
Salin selepas log masuk

synchronized(this)锁的是当前对象,当前有几个对象那么这个this就是有多份,这里的this只能锁同一个对象。
synchronized(XX.class)只要是这个类型的class这把锁就都有用

当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
以上规则对其它对象锁同样适用.

3.修饰静态方法
我们知道 静态方法是属于类的而不属于对象的 。同样的, synchronized修饰的静态方法锁定的是这个类的所有对象,所有类用它都会有锁的效果

public synchronized static void method() {
   // todo
   }
Salin selepas log masuk

4.修饰一个类
其作用的范围是synchronized后面括号括起来的部分,作用的对象是这个类的所有对象,只要是这个类型的class不管有几个对象都会起作用。如下代码

class ClassName {
    public void method() {
       synchronized(ClassName.class) {
                 // todo       
                 }
    }
 }
Salin selepas log masuk

总结:

A. 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。
B. 每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。
C. 实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。
D.同步关键字锁的是对象

Atas ialah kandungan terperinci synchronized使用的四个方法介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Prinsip dan senario penggunaan Disegerakkan dalam Java dan analisis penggunaan dan perbezaan antara muka Boleh Panggil Prinsip dan senario penggunaan Disegerakkan dalam Java dan analisis penggunaan dan perbezaan antara muka Boleh Panggil Apr 21, 2023 am 08:04 AM

1. Ciri asas 1. Ia bermula dengan kunci optimistik, dan jika konflik kunci kerap berlaku, ia ditukar kepada kunci pesimis 2. Ia bermula dengan pelaksanaan kunci ringan, dan jika kunci itu dipegang untuk masa yang lama, ia ditukar kepada kunci heavyweight 3. Strategi kunci putaran yang paling mungkin digunakan semasa melaksanakan kunci ringan 4. Ia adalah kunci tidak adil 5. Ia adalah kunci masuk semula 6. Ia bukan kunci baca-tulis 2. JVM akan menyegerakkan proses penguncian Kunci dibahagikan kepada tiada kunci, kunci berat sebelah, kunci ringan dan keadaan kunci berat. Ia akan dinaik taraf secara berurutan mengikut situasi. Kunci berat sebelah menganggap bahawa protagonis lelaki adalah kunci dan protagonis wanita adalah benang Jika hanya benang ini menggunakan kunci ini, maka protagonis lelaki dan protagonis wanita boleh hidup bahagia selama-lamanya walaupun mereka tidak mendapat sijil nikah (mengelakkan tinggi. -operasi kos). Tetapi peranan sokongan wanita muncul

Kata kunci Java disegerakkan prinsip dan analisis contoh status kunci Kata kunci Java disegerakkan prinsip dan analisis contoh status kunci May 11, 2023 pm 03:25 PM

1. Konsep kunci dalam Java Spin lock: Apabila benang memperoleh kunci, jika kunci telah diperoleh oleh benang lain, maka benang akan menunggu dalam satu gelung, dan kemudian terus menilai sama ada kunci itu boleh berjaya diperolehi sehingga ia diperolehi. Kunci akan keluar dari gelung. Penguncian optimistik: Dengan mengandaikan tiada konflik, jika data didapati tidak konsisten dengan data yang diperoleh sebelum ini semasa mengubah suai data, data terkini akan dibaca dan pengubahsuaian akan dicuba semula. Kunci pesimis: Andaikan bahawa konflik serentak akan berlaku, segerakkan semua operasi berkaitan data dan mula mengunci dari masa data dibaca. Kunci eksklusif (tulis): Tambahkan kunci tulis pada sumber Utas boleh mengubah suai sumber, tetapi utas lain tidak boleh menguncinya semula (tulisan tunggal). Kunci kongsi (baca): Selepas menambah kunci baca pada sumber, ia hanya boleh dibaca tetapi tidak diubah suai benang lain hanya boleh menambah kunci baca dan tidak boleh menambah kunci tulis (berbilang). Lihat sebagai S

Bagaimana untuk menggunakan disegerakkan untuk melaksanakan mekanisme penyegerakan di Java? Bagaimana untuk menggunakan disegerakkan untuk melaksanakan mekanisme penyegerakan di Java? Apr 22, 2023 pm 02:46 PM

Ringkasan cara menggunakan disegerakkan dalam Java 1. Apabila disegerakkan digunakan sebagai pengubah suai fungsi, kod sampel adalah seperti berikut: Publicsynchronizedvoidmethod(){//….} Ini ialah kaedah penyegerakan Jadi objek yang manakah disegerakkan pada masa ini? Apa yang dia kunci ialah memanggil objek kaedah disegerakkan ini. Dalam erti kata lain, apabila objek P1 melaksanakan kaedah penyegerakan ini dalam urutan yang berbeza, mereka akan membentuk pengecualian bersama untuk mencapai kesan penyegerakan. Walau bagaimanapun, objek lain P2 yang dijana oleh Kelas yang mempunyai objek ini boleh sewenang-wenangnya memanggil kaedah ini dengan kata kunci yang disegerakkan ditambah. Kod sampel di atas, dsb.

Apakah tiga kaedah penyegerakan dalam Java dan cara menggunakannya? Apakah tiga kaedah penyegerakan dalam Java dan cara menggunakannya? Apr 27, 2023 am 09:34 AM

1. Jelaskan bahawa disegerakkan ialah kaedah penyegerakan kami yang paling biasa digunakan, dan terdapat tiga cara utama untuk menggunakannya. 2. Contoh//Penyegerakan kaedah kelas umum synchronizedpublidvoidinvoke(){}//Penyegerakan kaedah statik kelas synchronizedpublicstaticvoidinvoke(){}//Penyegerakan blok kod disegerakkan(objek){}Perbezaan antara ketiga-tiga kaedah ini ialah objek yang disegerakkan adalah berbeza. Kelas biasa menyegerakkan objek itu sendiri, kaedah statik menyegerakkan Kelas itu sendiri, dan blok kod menyegerakkan objek yang kita isi dalam kurungan. Apakah koleksi yang terdapat di Jawa?

Apakah prinsip dan proses peningkatan kunci Java Synchronized? Apakah prinsip dan proses peningkatan kunci Java Synchronized? Apr 19, 2023 pm 10:22 PM

Penyediaan alat Sebelum kita bercakap secara rasmi tentang prinsip disegerakkan, mari kita bercakap tentang kunci putaran dahulu, kerana kunci putaran memainkan peranan yang besar dalam pengoptimuman penyegerakan. Untuk memahami kunci putaran, kita perlu memahami apa itu atomicity. Apa yang dipanggil atomicity hanya bermaksud bahawa setiap operasi sama ada tidak dilakukan atau dilakukan. Melakukan semua bermakna ia tidak boleh diganggu semasa operasi Contohnya, untuk menambah satu kepada data pembolehubah, terdapat tiga langkah berikut: tambah data Muatkan daripada ingatan ke dalam daftar. Tambahkan satu pada nilai data. Tulis hasilnya kembali ke ingatan. Atomicity bermaksud bahawa apabila utas menjalankan operasi kenaikan, ia tidak boleh diganggu oleh utas lain Hanya apabila utas ini menyelesaikan ketiga-tiga proses ini

Apakah Java Synchronized Apakah Java Synchronized May 14, 2023 am 08:28 AM

Apakah yang Disegerakkan? Pembaca Java tidak asing dengan kata kunci yang disegerakkan Ia boleh dilihat dalam pelbagai kod sumber perisian tengah atau kod sumber JDK Bagi pembaca yang tidak biasa dengan disegerakkan, mereka hanya tahu bahawa kata kunci yang disegerakkan perlu digunakan dalam berbilang. -benang disegerakkan boleh memastikan keselamatan benang. Ia dipanggil: kunci mutex (hanya satu utas boleh dilaksanakan pada masa yang sama, utas lain akan menunggu), juga dipanggil: kunci pesimis (hanya satu utas boleh dilaksanakan pada masa yang sama, utas lain akan menunggu). membantu anda melaksanakannya, pembangun hanya perlu menggunakan kata kunci yang disegerakkan. Apabila menggunakannya, anda perlu menggunakan objek sebagai mutex untuk kunci

Mengapakah Java perlu menyediakan Lock dan bukannya hanya menggunakan kata kunci yang disegerakkan? Mengapakah Java perlu menyediakan Lock dan bukannya hanya menggunakan kata kunci yang disegerakkan? Apr 20, 2023 pm 05:01 PM

Ringkasan: Kata kunci disegerakkan disediakan dalam Java untuk memastikan hanya satu utas boleh mengakses blok kod disegerakkan. Memandangkan kata kunci disegerakkan telah disediakan, mengapa antara muka Lock juga disediakan dalam pakej Java SDK? Adakah ini penciptaan semula roda yang tidak perlu? Hari ini, kita akan membincangkan isu ini bersama-sama. Kata kunci disegerakkan disediakan dalam Java untuk memastikan bahawa hanya satu utas boleh mengakses blok kod disegerakkan. Memandangkan kata kunci disegerakkan telah disediakan, mengapa antara muka Lock juga disediakan dalam pakej Java SDK? Adakah ini penciptaan semula roda yang tidak perlu? Hari ini, mari kita bincangkan bersama

Berapa banyak pengubah bukan akses yang terdapat di Java? Berapa banyak pengubah bukan akses yang terdapat di Java? Aug 30, 2023 pm 06:01 PM

Java menyediakan beberapa pengubah suai lain untuk menyediakan fungsi di luar penglihatan. Pengubah suai ini dipanggil pengubah bukan akses. Ahli Statik yang diisytiharkan sebagai statik adalah perkara biasa kepada semua keadaan kelas. Ahli statik ialah ahli peringkat kelas yang disimpan dalam ingatan kelas. Akhir Pengubah suai ini digunakan untuk menyekat pengubahsuaian lanjut kepada pembolehubah, kaedah atau kelas. Nilai pembolehubah yang diisytiharkan muktamad tidak boleh diubah suai setelah ia memperoleh nilainya. Kaedah Akhir tidak boleh ditindih dalam subkelas, begitu juga subkelas kelas Akhir tidak boleh dibuat. Abstrak Pengubah suai ini boleh digunakan dengan kelas atau kaedah. Anda tidak boleh menggunakan pengubah suai ini pada pembolehubah dan pembina. Kaedah yang diisytiharkan abstrak mesti diubah suai dalam subkelas. Anda tidak boleh membuat instantiate kelas yang diisytiharkan abstrak. Synchronous Pengubah suai ini digunakan untuk mengawal berbilang benang

See all articles