如何在java中操作独立线程中的变量?

时间:2016-02-24 19:22:50

标签: java 2d-games

早上好, 我有个问题。 我需要操作一个在线程中修改的变量。

new Timer(5000, new ActionListener() 
{
    @Override
    public void actionPerformed(ActionEvent e) 
    {
        color=colorRandom();
    }
}).start();

其中: color 是在 white 上设置的全局变量, colorRandom()是一种生成并返回随机颜色(黑色,白色或红色)的方法。

最后,我尝试检查椭圆的颜色(另一个对象)是否与矩形相同。 所以我这样做了:

public boolean checkColor()
{
    return ellipseColor.equals(rect.color);
}

这不起作用。 它没有给我正确的价值。 即使两个对象具有相同的颜色,也表示颜色不同。 在将椭圆和矩形的颜色都设置为 white

之后我也尝试了这个
public boolean checkColor()
{
    return ellipseColor.equals(rect.color);
}

这会返回 true ! 所以方法checkColor似乎没问题。 问题, 在第一种情况下, 是变量没有被正确操纵。 有什么建议? 我也尝试使用 locks ,因为朋友告诉我尝试它但它仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

问题在于您用来比较颜色的方法。 有关比较颜色的正确方法,请参阅此处的答案The unix timestamp isn't affected by a timezone setting. Setting the timezone only affects the interpretation of the timestamp value.

使用ColorA == ColorB只会在某些时候使用。 具体来说,如果两个引用都引用Color.WHITE对象。 如果一个是Color.WHITE而另一个是新的Color(255,255,255),这将不起作用,因为它们是不同的对象。