私はシングルトンクラスを持っています:
public class Singleton {
private static Singleton istance = null;
private Singleton() {}
public synchronized static Singleton getSingleton() {
if (istance == null)
istance = new Singleton();
return istance;
}
public void work(){
for(int i=0; i<10000; i++){
Log.d("-----------", ""+i);
}
}
}
複数のスレッドが work() 関数を呼び出しています。
public class Main {
public static void main(String[] args) {
new Thread (new Runnable(){
public void run(){
Singleton s = Singleton.getSingleton();
s.work();}
}).start();
System.out.println("main thread");
new Thread(new Runnable() {
public void run() {
Singleton s = Singleton.getSingleton();
s.work();
}
}).start();
}
}
2 つの作業関数が同時にインスタンス化されたかのように、2 つのスレッドが同時に実行されていることに気付きました。
同時に実行するのではなく、前のスレッドの代わりに最後のスレッドを実行したい。2番目の呼び出しで最初の呼び出しのメモリ空間をオーバーライドすることはJavaで可能ですか?