Rumah Java javaTutorial synchronized与static synchronized 的区别

synchronized与static synchronized 的区别

Dec 13, 2016 am 11:18 AM
synchronized

 1.synchronized与static synchronized 的区别
      synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。那么static synchronized恰好就是要控制类的所有实例的访问了,static synchronized是限制线程同时访问jvm中该类的所有实例同时访问对应的代码快。实际上,在类中某方法或某代码块中有 synchronized,那么在生成一个该类实例后,改类也就有一个监视快,放置线程并发访问改实例synchronized保护快,而static synchronized则是所有该类的实例公用一个监视快了,也也就是两个的区别了,也就是synchronized相当于 this.synchronized,而
static synchronized相当于Something.synchronized.
      一个日本作者-结成浩的《java多线程设计模式》有这样的一个列子:
      pulbic class Something(){
         public synchronized void isSyncA(){}
         public synchronized void isSyncB(){}
         public static synchronized void cSyncA(){}
         public static synchronized void cSyncB(){}
     }
   那么,加入有Something类的两个实例a与b,那么下列组方法何以被1个以上线程同时访问呢
   a.   x.isSyncA()与x.isSyncB() 
   b.   x.isSyncA()与y.isSyncA()
   c.   x.cSyncA()与y.cSyncB()
   d.   x.isSyncA()与Something.cSyncA()
    这里,很清楚的可以判断:
   a,都是对同一个实例的synchronized域访问,因此不能被同时访问
   b,是针对不同实例的,因此可以同时被访问
   c,因为是static synchronized,所以不同实例之间仍然会被限制,相当于Something.isSyncA()与   Something.isSyncB()了,因此不能被同时访问。
   那么,第d呢?,书上的 答案是可以被同时访问的,答案理由是synchronzied的是实例方法与synchronzied的类方法由于锁定(lock)不同的原因。
   个人分析也就是synchronized 与static synchronized 相当于两帮派,各自管各自,相互之间就无约束了,可以被同时访问。目前还不是分清楚java内部设计synchronzied是怎么样实现的。


    结论:A: synchronized static是某个类的范围,synchronized static cSync{}防止多个线程同时访问这个    类中的synchronized static 方法。它可以对类的所有对象实例起作用。
   
               B: synchronized 是某实例的范围,synchronized isSync(){}防止多个线程同时访问这个实例中的synchronized 方法。



     2.synchronized方法与synchronized代码快的区别
      synchronized methods(){} 与synchronized(this){}之间没有什么区别,只是 synchronized methods(){} 便于阅读理解,而synchronized(this){}可以更精确的控制冲突限制访问区域,有时候表现更高效率。


     3.synchronized关键字是不能继承的


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)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu 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

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

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

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