Я думал, что 'Thread safe' - это блокировка экземпляра, но написание тестового кода не дало желаемых результатов.
Требуемый результат должен быть квадратным, как этот.
singleton new instance
0 0 0 0 0 0 0 0 0 0
2 2 2 2 2 2 2 2 2 2
4 4 4 4 4 4 4 4 4 4
1 1 1 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 3 3
6 6 6 6 6 6 6 6 6 6
5 5 5 5 5 5 5 5 5 5
8 8 8 8 8 8 8 8 8 8
7 7 7 7 7 7 7 7 7 7
9 9 9 9 9 9 9 9 9 9
Это код, который я написал при тестировании.
public class main extends Thread{
String name = "";
public main(String name) {
this.name = name;
}
@Override
public void run() {
BillPughSingleton.getInstance().addNum(name);
}
public static void main(String[] args){
for(int i=0; i< 10; i++)
new main(i+"").start();
}
}
public class BillPughSingleton {
private BillPughSingleton() {}
private static class BillPughSingletonHolder{
private static BillPughSingleton INSTANCE = new BillPughSingleton();
static {
System.out.println("singleton new instance");
}
}
public static BillPughSingleton getInstance() {
return BillPughSingletonHolder.INSTANCE;
}
//Adding 'synchronized' to it result I want.
public void addNum(String name) {
for(int i=0; i<10;i ++)
System.out.print(name+" ");
System.out.println(); // \n
}
}
Пожалуйста, дайте мне знать, если я неправильно понимаю 'Thread-safe'.Спасибо!