java单例类在多线程调用的时候声明的类变量会受影响吗?

踏雪凌冰 发布于 2015/04/20 15:05
阅读 414
收藏 0

举例:

class A{

     int x = 0;

    private A instance = new A();

    public A getInstance{

    return instance;

}

   

    public A(){

    private void addX{

    x++;

}

}


class B extends Thread{

private A instance = A.getInstance();

public void run(){

instance.addX();

System.out.println(instance.x);

}

public static void main(String[] args){

final int travelThreads = 16;
B fetcher = new B(travelThreads);
fetcher.start();

}

}


大概就是这个样子,不知道能看明白么 呵呵


在B中使用的X值各个线程间会错乱么

加载中
0
甘薯
甘薯
当然会了, 你没有同步方法.
踏雪凌冰
踏雪凌冰
哦 明白了 谢谢哈
甘薯
甘薯
回复 @踏雪凌冰 :如果你写到方法内部,就谈不上共享了.你的基础太差还是好好看看上再来提问更合适一些
踏雪凌冰
踏雪凌冰
那我写成方法内的变量是不是就没问题了?
0
踏雪凌冰
踏雪凌冰

class A{

    // int x = 0;

    private A instance = new A();

    public A getInstance{

    return instance;

}

   

    public A(){

    private int addX{

    int x = 1;

    x++;

    return x;

}

public void process(){

int y = addX();

System.out.println(y);

}

}

把class A改成这样呢

0
英强
英强

你写得这个代码问题太多了,如果想问清楚,你就发个自己先能跑通的代码上来。

0
goto-array
goto-array
同意楼上。。。发给的 改后代码 比没改的 更加不可读,不明白楼主到底想干啥。写不出可行的代码,更别提让别人去理解了。
踏雪凌冰
踏雪凌冰
额 好吧 原来的代码太长,我抽象了一下。。。 如何提高代码质量呢
返回顶部
顶部