Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Многопоточность. Остановить main


Автор: Aellipsis 5.10.2011, 15:14
Надо посчитать время выполнения run() потока threadData. Для этого надо остановить поток main. Пробовал threadData.join(), но main все равно продолжает выполняться, не отдавая выполнение threadData. Как быть?

Автор: LSD 5.10.2011, 15:40
Правильный метод, это внутри майн проверять некий флаг, и когда он будет установлен завершать работу потока.

Автор: Stolzen 5.10.2011, 18:12
А зачем останавливать? Можно ведь в этом run() определить начало и конец.

Автор: Royan 8.10.2011, 16:13
Цитата(Aellipsis @  5.10.2011,  12:14 Найти цитируемый пост)
но main все равно продолжает выполняться, не отдавая выполнение . Как быть? 

Поток на то и поток чтобы выполняться не зависимо. Либо поступите как предложил Stolzen, либо вызовите 


Код

long start = System.currentTimeMillis();
threadData.start();
threadData.join();
System.out.println("Execution time was "+(System.currentTimeMillis() - start)/1000); //Время в секундах

Автор: Aellipsis 10.10.2011, 14:40
Остановить main мне надо было, чтобы посчитать время выполнения threadData.
threadData.join() работает, только у меня было время выполнения run() меньше 1мс  smile 

Автор: math64 10.10.2011, 14:56
Цитата(Aellipsis @  10.10.2011,  14:40 Найти цитируемый пост)
threadData.join() работает, только у меня было время выполнения run() меньше 1мс

Так повтори все 1000 раз, а потом время подели на 1000
Код

class ThreadRepeat {
public ThreadRepeat(Runnable r, int n) { this.r = r; this.n = n; }
public void run() { for(int i=0; i<n;i++) r.run(); }
Runnable r;
int n;
};
int cnt = 1000;
long start = System.currentTimeMillis();
Thread* thread1000 = new TreadRepeat(threadData, cnt);
thread.start();
thread.join();
System.out.println("Execution time was "+(double)(System.currentTimeMillis() - start)/cnt/1000); //Время в секундах

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)