java

位置:IT落伍者 >> java >> 浏览文章

Java SynDemo对象如何解决继承问题


发布日期:2018年06月18日
 
Java SynDemo对象如何解决继承问题

Java SynDemo对象刚一出现的时候有很多程序员都很头痛其实这是完全没有必要的下面我们就来详细的学习下有关的相关问题我们发现对于Java SynDemo对象只有synMethord运行了而synMethord却没有运行

这是应为在方法级别的synchronized声明将lock这个类对象的当前实例所以在synMethord运行结束unlock之前当前Java SynDemo对象实例是无法运行synMethord这种方法级别的synchronized声明和以下的做法是等同的

package blogsgpcuster;/** * * @author AaronGuo * */

public class SynDemo { public void synMethord() {

synchronized (this) { while (true) { try { Threadsleep();

Systemoutprintln(synMethord); } catch (InterruptedException

e) { // TODO Autogenerated catch block

eprintStackTrace();

}

}

}

}

public void synMethord() { synchronized (this) { while (true)

{ try { Threadsleep(); Systemoutprintln(synMethord); }

catch (InterruptedException e) { // TODO Autogenerated catch block

eprintStackTrace();

}

}

}

}

}

运行程序结果与上次相同

如果我们希望分别同步个方法该如何处理?可以参考这个实现

package blogsgpcuster;/** * * @author AaronGuo * */

public class SynDemo { private Object flag = new Object();

private Object flag = new Object(); public void synMethord()

{ synchronized (flag) { while (true) { try { Threadsleep();

Systemoutprintln(synMethord); } catch (Interrupted

Exception e) { // TODO Autogenerated catch block

eprintStackTrace();

}

}

}

}

public void synMethord() { synchronized (flag) { while (true)

{ try { Threadsleep(); Systemoutprintln(synMethord); }

catch (InterruptedException e) { // TODO Autogenerated catch block

eprintStackTrace();

}

}

}

}

}

运行程序结果如我们预期

main

synMethord

synMethord

main

synMethord

main

synMethord

synMethord

关于Synchronized还有一些其他的话题如static的问题继承的问题与volatile搭配使用等等在网上都有很详细的说明这里就不重复介绍了 以上就是对Java SynDemo对象的详细介绍

上一篇:实现JS脚本导入JAVA类包

下一篇:Java线程控制权源代码的深入探讨