На бирже курсовых и дипломных проектов можно найти готовые бесплатные и платные работы или заказать написание уникальных курсовых работ, дипломов, лабораторных работ, контрольных работ, диссертаций, рефератов по самым низким ценам. Добавив заявку на написание требуемой для вас работы, вы узнаете реальную стоимость ее выполнения.

Здравствуйте гость!

Задание № 2313

Наменование:

Контрольная Потоки в Java (OS Threads)

Предмет:

Программирование

Бюджет:

500 руб.

Дата:

23.05.2011

Описание:

Нужно выполнить задание на тему "Потоки в Java" (OS Threads)

Я учусь на первом курсе в универе, поэтому задание не очень сложное. Если оплата не устраивает, можно обсудить ваши предложения.


TØ 18.05.11

CA5 : Threads


Remember to test the program carefully !


Spinning the wheel of fortune


The following java program has 3 classes :

Wheeloffortune : Has a variable ”number” = the number indicated by the wheel of fortune.
There are four numbers on the wheel of fortune : 1, 2, 3 and 4.

Fortunethread : A thread spinning the wheel of fortune.
Each pass will move the wheel of fortune one place forward.

Testfortune : Creates a wheeloffortune and 3 threads.
Starts the threads, but do not stop them.

When running the program the following result occurred :

Thread 2 stopped after 1.55 sec
Number is now = 5
Thread 3 stopped after 1.62 sec
Number is now = 6
Thread 1 stopped after 1.66 sec
Number is now = 7
1.a) Explain, how this result could occur.

1.b) Will the results always be identical when the program is running (why/why not) ?

1.c) Change the methods in Wheeloffortune and Fortunethread, to get rid of the problem.













public class Wheeloffortune
{
// instance variables
public int ONE=1;
public int TWO=2;
public int THREE=3;
public int FOUR=4;
private int number;

// constructor
public Wheeloffortune()
{
number=ONE;
}

// get number
public int getNumber()
{
return number;
}

// set number
public void setNumber(int n)
{
number=n;
}

}
import java.text.*;

public class Fortunethread extends Thread
{
// instance variables
boolean running;
Wheeloffortune fortune;
int id;
long starttime;
long endtime;
DecimalFormat fmt=new DecimalFormat("###0.00");

// constructor
public Fortunethread(Wheeloffortune fortune, int id)
{
this.fortune=fortune;
this.id=id;
starttime=System.currentTimeMillis();
running=true;
}

// run
public void run()
{
while(running)
{
if(fortune.getNumber()==fortune.FOUR)
{
fortune.setNumber(fortune.ONE);
}
else
{
fortune.setNumber(fortune.getNumber()+1);
if(fortune.getNumber()>fortune.FOUR)
{
endtime=System.currentTimeMillis();
System.out.println("Thread "+id+" stopped after "+fmt.format(0.001*(endtime-starttime))+" sec");
System.out.println("number is now = "+fortune.getNumber());
stopThread();
}
}
}
}

// stop
public void stopThread()
{
running=false;
}

}
public class Testfortune
{
// main
public static void main(String[] args)
{
Wheeloffortune wof=new Wheeloffortune();
Fortunethread a=new Fortunethread(wof,1);
Fortunethread b=new Fortunethread(wof,2);
Fortunethread c=new Fortunethread(wof,3);
a.start();
b.start();
c.start();
}

}