ich ein Singletonklasse wie diese haben:synchronisierte Methode nicht blockiert andere Threads
private static StringsHandler INSTANCE = null;
private int count = 0;
//I have 2 methods so I don't have to be sending nulls to getInstance
//once it's created
public static void createInstance(List<String> strings){
if(StringsHandler.INSTANCE == null)
StringsHandler.INSTANCE = new StringsHandler(strings);
}
public static StringsHandler getInstance(){
return StringsHandler.INSTANCE;
}
public synchronized File use(){
count++;
System.out.println("threads using .use " + count);
while(true){} //Keep the thread here so count should stay as 1
}
Instanz über die Anwendung Hauptklasse erstellt wird, main-Methode wie folgt aus:
if(stringList.isEmpty()){
LOGGER.error("List was empty");
System.exit(0);
}
StringsHandler.createInstance(stringList);
Und ich rufe es so etwas wie dies mit:
list.parallelStream().forEach(element -> {
SingletonClass.getInstance().use();
});
Dieses threads using .use 1
drucken soll, aber er druckt threads using .use 5
Warum erlaubt das synchronisierte Keyword mehr als 1 Thread?
Haben Sie mehr als ein Objekt? –
Wie nennst du das? – bcsb1001
Bearbeitet, um Ihre Fragen zu beantworten –