public Demo implements Runnable(){
private String threadName;
public Thread t;
public Demo(String name){
this.threadName = name;
}
public void begin(){
t = new Thread(this,threadName);
t.start();
}
public void run(){
Thread.sleep(1000);
System.out.println("Running");
}
}
public static void main(String args[]) {
Demo demo1 = new Demo("DEMO1");
demo1.begin();
Demo demo2 = new Demo("DEMO2");
demo2.begin();
}
Хорошо, я немного запутался в теме, даже после чтения API и документации. Я понимаю, что если вы либо реализуете Runnable(), либо расширяете класс Thread, он создает собственный поток.Сколько потоков существует здесь?
В этом случае Публичный static void main() создает «Основной поток», а затем его дети являются 2 последующими потоками (объекты Demo), а после вызова «begin()» есть еще 2 потоки, связанные с объектами Demo.
- В этом коде 5 статей.
- Thread.sleep (1000), кажется, останавливает все потоки, поэтому он имеет в виду «главную тему»?
- Если я вызову synchronized (this) в методе run() внутри класса Demo, у Demo1 есть свой монитор, в то же время Demo2 владеет своим монитором, выполняя свою собственную задачу одновременно? Или потому, что они разделяют один общий «Основной монитор», они запускаются по одному за раз, ожидая очереди.