小编Raj*_*mar的帖子

用synchronized块替换volatile不起作用

我正在阅读教程.我理解volatile关键字的用法.但是当我试图在不使用volatile关键字的情况下在同步块中对关注变量进行操作时实现相同的结果时,它不起作用.它抛出IllegalMonitorStateException.这是我试过的修改过的代码.

public class VolatileTest {
private static Integer MY_INT = 0;

public static void main(String[] args) {
    new ChangeListener().start();
    new ChangeMaker().start();
}

static class ChangeListener extends Thread {
    @Override
    public void run() {
         synchronized(MY_INT){
        int local_value = MY_INT;
        while ( local_value < 5){
            if( local_value!= MY_INT){
                System.out.format("Got Change for MY_INT : {0}", MY_INT);
                 local_value= MY_INT; 
                  try {
                MY_INT.wait();
            } catch (Exception e) { e.printStackTrace(); }}
            }
        }
    }
}

static class ChangeMaker extends Thread{
    @Override
    public void run() …
Run Code Online (Sandbox Code Playgroud)

java multithreading thread-safety

1
推荐指数
1
解决办法
78
查看次数

在java中覆盖等于方法的正确方法是什么?

public class Person {

    private String name;

    public Person(String name) {
        this.name = name;
    }

    public boolean equals(Person p) {
        System.out.println("..............");
        return p.name.equals(this.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

嗨,我正在通过OCJP问答并回答这个问题是 equals方法没有正确覆盖Object.equlas方法.

我认为用名称来覆盖这里是多余的,但是这个问题的答案也是不正确的.

能不能指出我在这里缺少什么概念......

注意:没有选项说覆盖hasCode和equlas与此问题具有相同的参数...

java

0
推荐指数
2
解决办法
1220
查看次数

标签 统计

java ×2

multithreading ×1

thread-safety ×1