Когда бы вы вызвали java's thread.run () вместо thread.start ()? - PullRequest
107 голосов
/ 04 ноября 2008

Когда бы вы назвали Java thread.run() вместо thread.start()?

Ответы [ 14 ]

3 голосов
/ 04 ноября 2008

Если вы хотите выполнить содержимое run () как любой другой метод. Конечно, не начинать тему.

2 голосов
/ 10 сентября 2012

Просто примечание к вышеупомянутым замечательным комментариям: иногда вы пишете многопоточный код, который использует метод "start" для запуска различных потоков. Вам будет намного проще, если вы будете использовать «run» (вместо «start») для отладки, поскольку это делает код для синхронного выполнения и отладки намного проще.

2 голосов
/ 04 ноября 2008

По крайней мере в JVM 1.6. Есть небольшая проверка, и запуск вызывается изначально:

 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)
            throw new IllegalThreadStateException();
        group.add(this);
        start0();
        if (stopBeforeStart) {
        stop0(throwableFromStop);
    }
    }

    private native void start0();
0 голосов
/ 15 февраля 2015
public class TestClass implements Runnable {
    public static void main(String[] args) {
        TestClass tc = new TestClass();

        Thread t1 = new Thread(tc);
        System.out.println("Before Starting Thread " + Thread.currentThread().hashCode());
        t1.start();
        System.out.println("After Starting Thread " + Thread.currentThread().hashCode());
    }

    @Override
    public void run() {
        System.out.println("TestClass Run method is  Running with thread " + Thread.currentThread().hashCode());        
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...