Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java] Thread потоки


Автор: olesja 14.9.2011, 22:22
Здравствуйте,
Я никак не могу понять как делать следующее задание. На уроке была одна теория, а задание практическое.
Надо создать цепочку потоков, чтобы связи (линки) в цепи могли передавать сообщения и измерять сколько потоков могут быть созданы, и как быстро они могут передавать сообщения.
Сколько линков может создать и запустить ваш компьютер? И какое количество сообщений передает в секунду?
Каждая отправка от одного линка к следующему засчитывается как передача одного сообщения. При измерении скорости передачи сообщений, вы должны использовать цепочку длины, которая не больше половины максимальной, которую может выдержать ваш компьютер. Или даже меньше.
Я написала синхронизированные методы put и get в самом классе, но как их применять в этом задании не знаю. Учитель сказал, что они в классе должны быть, чтобы решить это задание. Это первый урок по поводу потоков и я совсем запуталась как применять на практике полученные теоретические знания, которые были зарисованы в качестве детских картинок на доске и остались весьма непонятными.  
В данном коде я по факту запускаю только метод run, чтобы хотя бы посчитать время. Но как использовать put и get, чтобы решить задание я не понимаю. 
Код

import java.lang.*;
public class Link extends Thread
{

//time in nanoseconds
static long start = System.nanoTime();
static long time = System.nanoTime() - start;


private boolean full=false;
int val;

public synchronized int get()
{
while (full==false)
{
try { wait(); } catch (InterruptedException e) { }
}
full=false;
notifyAll();
return val;
}

private synchronized void put(int value)
{
while (full==true)
{
try { wait(); } catch (InterruptedException e) { }
}
val=value;
full=true;
notifyAll();
}


public void run()
{
int i, n=5;
for (i=0; i<n; i++)
{Thread t = new Thread();
System.out.println ("Thread"+i+" runs for "+time+" nanoseconds");
}

}

public static void main (String[]a)
{

Link l1=new Link();
l1.start();
}



}
 


Заранее большое СПАСИБО!!!
Буду признательна всем-всем :)
С уважением,
Пух

Автор: jk1 15.9.2011, 03:33
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: LSD 15.9.2011, 10:37
Что такое Линк? Что за сообщения надо передавать?

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