自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java SynDemo對象如何解決繼承問題

開發(fā) 后端
Java SynDemo對象在不斷的學(xué)習(xí)中一直有很多的問題出現(xiàn)。下面我們就看看如何才能更好的進(jìn)行相關(guān)問題的解決。希望大家有所收獲。

Java SynDemo對象剛一出現(xiàn)的時候有很多程序員都很頭痛,其實這是完全沒有必要的,下面我們就來詳細(xì)的學(xué)習(xí)下有關(guān)的相關(guān)問題。我們發(fā)現(xiàn),對于Java SynDemo對象,只有synMethord1運行了,而synMethord2卻沒有運行。

這是應(yīng)為在方法級別的synchronized聲明將lock這個類對象的當(dāng)前實例。所以在synMethord1運行結(jié)束unlock之前,當(dāng)前Java SynDemo對象實例是無法運行synMethord2的。這種方法級別的synchronized聲明和以下的做法是等同的:

 

  1. package com.cnblogs.gpcuster;/** * * @author Aaron.Guo * */  
  2. public class SynDemo { public void synMethord1() { 
    synchronized (this) { while (true) { try { Thread.sleep(1000); 
    System.out.println("synMethord1"); } catch (InterruptedException 
    e) { // TODO Auto-generated catch block  
  3. e.printStackTrace();  
  4. }  
  5. }  
  6. }  
  7. }  
  8. public void synMethord2() { synchronized (this) { while (true) 
    { try { Thread.sleep(1000); System.out.println("synMethord2"); } 
    catch (InterruptedException e) { // TODO Auto-generated catch block  
  9. e.printStackTrace();  
  10. }  
  11. }  
  12. }  
  13. }  

 

運行程序,結(jié)果與上次相同。

如果我們希望分別同步2個方法該如何處理?可以參考這個實現(xiàn):

 

  1. package com.cnblogs.gpcuster;/** * * @author Aaron.Guo * */  
  2. public class SynDemo { private Object flag1 = new Object();
     private Object 
    flag2 = new Object(); public void synMethord1() 
    { synchronized (flag1) { while (true) { try { Thread.sleep(1000); 
    System.out.println("synMethord1"); } catch (Interrupted
    Exception e) { // TODO Auto-generated catch block  
  3. e.printStackTrace();  
  4. }  
  5. }  
  6. }  
  7. }  
  8. public void synMethord2() { synchronized (flag2) { while (true) 
    { try { Thread.sleep(1000); System.out.println("synMethord2"); } 
    catch (InterruptedException e) { // TODO Auto-generated catch block  
  9. e.printStackTrace();  
  10. }  
  11. }  
  12. }  
  13. }  

 

運行程序,結(jié)果如我們預(yù)期:

 

  1. main   
  2. synMethord2   
  3. synMethord2   
  4. main   
  5. synMethord1   
  6. main   
  7. synMethord1   
  8. synMethord2 

 

 

關(guān)于Synchronized還有一些其他的話題,如static的問題,繼承的問題,與volatile搭配使用等等,在網(wǎng)上都有很詳細(xì)的說明,這里就不重復(fù)介紹了。 以上就是對Java SynDemo對象的詳細(xì)介紹。

【編輯推薦】

  1. Java線程同步如何在不同線程中調(diào)用
  2. Java線程同步的優(yōu)先級介紹
  3. Java線程返回值如何控制自己的未來
  4. Java線程通信源代碼中的奧秘探究
  5. Java線程同步問題在實踐中尋找答案
責(zé)任編輯:張浩 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-05-17 13:22:50

SQL對象名無效

2012-09-05 11:09:15

SELinux操作系統(tǒng)

2010-03-18 14:46:18

Java SynDem

2009-02-05 10:33:27

設(shè)備碎片Java ME移動

2025-01-02 09:48:52

JVMCARD_元素

2010-04-29 17:46:31

Oracle死鎖

2009-07-06 17:50:13

Java JSP

2010-03-11 18:09:33

Python正則表達(dá)式

2017-10-17 09:21:06

2023-10-30 18:35:47

MySQL主從延時

2011-08-29 10:34:00

網(wǎng)絡(luò)安全云安全云計算

2011-03-23 14:42:47

CPU過度消耗

2021-06-06 13:05:15

前端跨域CORS

2010-07-16 13:52:26

telnet漏洞

2024-10-29 16:41:24

SpringBoot跨域Java

2017-07-20 07:30:16

大數(shù)據(jù)數(shù)據(jù)互聯(lián)網(wǎng)

2013-05-21 10:49:59

Windows硬件沖突

2024-11-21 16:47:55

2019-11-26 14:30:20

Spring循環(huán)依賴Java

2010-03-24 09:25:36

Nginx配置
點贊
收藏

51CTO技術(shù)棧公眾號