В одной из книг даются примеры и мне не совсем понятно использование кодового слова "new".
Пример 1:
// Create a second thread.
class NewThread implements Runnable {
Thread t;
NewThread() {
// Create a new, second thread
t = new Thread(this, "Demo Thread");
System.out.println("Child thread: " + t);
t.start(); // Start the thread
}
// This is the entry point for the second thread.
public void run() {
try {
for(int i = 5; i > 0; i--) {
System.out.println("Child Thread: " + i);
Thread.sleep(500);
}
} catch (InterruptedException e) {
System.out.println("Child interrupted.");
}
System.out.println("Exiting child thread.");
}
}
class ThreadDemo {
public static void main(String args[]) {
new NewThread(); // create a new thread
try {
for(int i = 5; i > 0; i--) {
System.out.println("Main Thread: " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted.");
}
System.out.println("Main thread exiting.");
}
}
Пример 2
// Create a second thread by extending Thread
class NewThread extends Thread {
NewThread() {
// Create a new, second thread
super("Demo Thread");
System.out.println("Child thread: " + this);
start(); // Start the thread
}
// This is the entry point for the second thread.
public void run() {
try {
for(int i = 5; i > 0; i--) {
System.out.println("Child Thread: " + i);
Thread.sleep(500);
}
} catch (InterruptedException e) {
System.out.println("Child interrupted.");
}
System.out.println("Exiting child thread.");
}
}
class ExtendThread {
public static void main(String args[]) {
new NewThread(); // create a new thread
try {
for(int i = 5; i > 0; i--) {
System.out.println("Main Thread: " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted.");
}
System.out.println("Main thread exiting.");
}
}
В методе main вызывается оператор "new NewThread()". Почему предварительно не создается ссылочная переменная, а ей уже не присваивается ссылка на объект создаваемый оператором new?
Просто до этого встречал такие примеры "Test t1 = new Test();".
В вашем примере ссылочная переменная не создается, поскольку она больше нигде не используется. Если вы хотите использовать ссылочную переменную, то надо писать что-то наподобие
Thread t = new NewThread();
t.start();
и убрать вызов start()
из конструктора.
В этих примерах просто необходимо создать и запустить поток. Больше к нему не требуется доступ. Если бы мы потом захотели проверить состояние потока или получить его имя, то мы бы создали переменную и через нее проводили бы все операции. А так нам надо создать и запустить. Создаем с помощью new
, а запускается поток прямо в конструкторе.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Покопавшись в интернете нашёл причину кодов \u**** в html-файлах, получающихся при создании документации html из javadoc-комментариев, записанных в исходном...
Могу ли я запрашивать permission на отправку Push Notification по аналогии с локацией или доступом к памяти?