单例和多线程同步访问没有什么直接关系。

解决方案 »

  1.   


    我是这样想的,比如有一个类似全局变量String
    如果
    class RUN implements Runnable{
    private String s;
    @Override
    public void run(){
       {
        同步(s)
       } 
       }
    }
    new Thread(new Run).start();
    new Thread(new Run).start();
    new Thread(new Run).start();还有一种解决思路,自己图省事
    class Singleton {
    private String s;
    private final static Singleton instance = new Singleton();
    private Singleton(){}
    public Singleton getInstance(){
    return instance;
    }
    public String getS(){}
    public void setS(String s){this.s =s;}
    }不同的线程里面代码{
       Singleton.getInstance().setS(String);
       Singleton.getInstance().getS()....
    }
      

  2.   

    只读的话单例或静态化就可以了.
    如果是有读有写的话就得加锁了.
      

  3.   

    你这个是单例的成员变量使用多线程了。如果存在并发访问,做线程同步是必须的。没什么互斥的,而是必须这么组合。
      

  4.   

    1.单例模式,并不能解决同步问题,相反在多线程环境中,单例模式会可能引发同步问题,如果不是单例同步没有意义。
    2.在多线程环境中,单例模式可能会造成资源竞争,主要看在代码中是否使用属性(即在类中属于全局变量)),并且对属性有写操作,就可能会出现数据同步问题。
    3.在多线程环境中,如果方法中使用类变量(即静态字段),并且对类变量有写操作,就可能会出现数据同步问题。
      

  5.   

    我似乎明白了什么。因为我现在的并发度比较低,我考虑的是单例模式不需要锁资源,也能够解决问题。但是如果并发度一旦上来的话,不锁资源,写入资源的话就有问题了。对吧?
      

  6.   

    并发度一旦上来的话,不锁资源,写入资源的话就有问题了
    是的。有些资源不允许多线程访问的,必须要做同步