При написании программы с использованием multi threading
у нас был метод, содержащий метод run
в разных потоках. Они использовали thread.start
вместо thread.run
. Может ли кто-нибудь объяснить, в чем причина отказа от метода по имени?Метод вызова в java с использованием многопоточности
ответ
Метод Thread.run() будет выполнять метод в текущем или основном потоке. Принимая во внимание, что метод Thread.start() будет выполнять логику в отдельном потоке.
Дополнительная информация What's the difference between Thread start() and Runnable run()
При вызове метода Run() непосредственно на классе, он будет выполнять код в основном потоке. Когда вы используете метод Thread.start(), создается новый поток. Затем JVM вызывает ваш метод run(), когда поток разрешен для запуска.
Посмотрите на Oracle documentation.
Thread.start() создает новый поток и вызывает работоспособной параллельно, где, как Thread.run() работает, как только метод call.ie, не создается поток, поэтому мы в основном используем Thread.start()
Thread.start
создаст новый поток из текущего работающего кода и вызоваThread.run
функции.Thread.run
вызовет методrun
этого класса, не создавая новую тему.
Thread.java:
public synchronized void start() {
/**
* This method is not invoked for the main method thread or "system"
* group threads created/set up by the VM. Any new functionality added
* to this method in the future may have to also be added to the VM.
*
* A zero status value corresponds to state "NEW".
*/
if (threadStatus != 0 || this != me)
throw new IllegalThreadStateException();
group.add(this);
start0();
if (stopBeforeStart) {
stop0(throwableFromStop);
}
}
public void run() {
if (target != null) {
target.run();
}
}
JDK Thread
класс: http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/5672a2be515a/src/share/classes/java/lang/Thread.java
- 1. Метод вызова класса Java Java в многопоточности
- 2. Метод остановки многопоточности Java
- 3. Метод вызова с использованием пользовательской аннотации - JAVA
- 4. Механизм многопоточности в java
- 5. Факториал с использованием многопоточности
- 6. программа светофора с использованием java многопоточности
- 7. Ускорение Java MergeSort с использованием многопоточности
- 8. Метод вызова в Java
- 9. Методы многопоточности обратного вызова
- 10. Метод вызова в Java
- 11. Метод вызова с использованием отражения
- 12. Двоичный поиск с использованием многопоточности
- 13. PINGing с использованием многопоточности
- 14. метод вызова с параметрами java
- 15. Методы вызова Java с использованием ||
- 16. Выполнение задачи многопоточности java многопоточности
- 17. с использованием семафоров для многопоточности
- 18. Использование многопоточности в java?
- 19. Эффективность Java (метод вызова)
- 20. Метод вызова метода Java
- 21. метод вызова с использованием классов в scala
- 22. Запись значений в файл с использованием многопоточности в java
- 23. Создание игры в кости в java с использованием многопоточности
- 24. Найти метод вызова в Java
- 25. Синхронизация многопоточности в Java
- 26. Java метод коррекции вызова
- 27. Метод вызова Java
- 28. метод Java вызова
- 29. Java асинхронного вызова метод с использованием исполнителя услуг
- 30. Метод вызова Java-экземпляра
Это не ответ на ваш вопрос, но я хотел бы предложить вам управлять потоками с 'Executors' https: // docs.oracle.com/javase/tutorial/essential/concurrency/executors.html – Radek
Здесь, на наш взгляд, ответили: [http://stackoverflow.com/questions/8579657/java-whats-the-difference- между-поточно-пуско-работоспособная перспектива] (http://stackoverflow.com/questions/8579657/java-wha TS-разностный-между-нить-пуско-работоспособная перспектива) –