0
У меня есть одноэлементный класс, который также является Runnable (и наблюдаемым). Когда я пытаюсь запустить поток из main, он не создает новый поток и не застревает в основном цикле.singleton и thread не работают вместе
public class A extends Observable implements Runnable
{
private static A instance = null;
private A() {
}
public static A getInstance() {
if(instance == null) {
instance = new A();
}
return instance;
}
@Override
public void run()
{
while (true) {
System.out.print("\nSleeping");
// sleep
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.print("\n[Error]");
}
}
}
}
и главный класс:
Thread thread = new Thread(A.getInstance());
thread.run();
System.out.print("\nAfter...");
Я не могу видеть "После" журнала, только "Спящий" в цикле. Зачем?
И ... (было бы неплохо, чтобы вы объяснили разницу.) –
Разница заключается в том, что 'start()' - это метод, который библиотека предоставляет вам для вызова, когда вы хотите начать новый поток. 'run()' - это метод, который _you_ предоставляет библиотеке для вызова _in_ нового потока. –