java многопоточность для увеличения и уменьшения счета - PullRequest
0 голосов
/ 29 апреля 2020

Работа над заданием класса, и я изо всех сил пытаюсь справиться с этим.

Это должно быть поточно-ориентированным и работоспособным.

Мне нужно создать 2 объекта для оценки, которые инициализируются уникальным идентификатором и начальным значением 100. Затем необходимо создать 20 потоков и назначить 5 потоков для инкрементатора и 5 потоков для декремента первого объекта. и дополнительные 5 потоков для каждого второго объекта.

class ScoreRunnerDemo implements Runnable
{

private long id = 1;
private double score = 100;

Thread t1;
// Count()
{
    t1 = new Thread(this, "Runnable Thread")
            System.out.println("created thread " + t1);
    t1.start();
}

public void run ()
{
    try
    {
        for (int i = 0; i<5; i++) {


            System.out.println("Printing the count " + i);
            Thread.sleep(100);
        }
        }
        catch (InterruptedException e)
        {
            System.out.println("first increment thread 
 interrupted");

        }
    System.out.println("t1 is over");
}
}

public class ScoreRunner
{
public static void main(String[] args) {
    //number of threads

    int n = 20;
    for (int i = 0; i < n; i++) {
        ScoreRunnerDemo object = new ScoreRunnerDemo();
        while (ScoreRunnerDemo.getScore < 200) {
            System.out.println("Thread: " + 
Thread.currentThread().getId() + " Score: " + ScoreRunner.());
        }
    }
}

, пожалуйста, помогите, поскольку я не уверен в том, что еще мне нужно.

Класс оценки выглядит следующим образом:

import java.text.DecimalFormat;

public class Score
{
private long id;
private double score;
private DecimalFormat df = new DecimalFormat("#,###.##");

/**Grade
 * @param id
 * @param score
 */
public Score(long id, double score)
{
    this.id = id;
    this.score = score;
}

/** Method getId
 * @return
 */
public long getId()
{
    return id;
}

/** Method setId
 * @param id
 */
public void setId(long id)
{
    this.id = id;
}

/** Method getScore
 * @return
 */
public double getScore()
{
    return score;
}

/** Method setScore
 * @param score
 */
public void setScore(double score)
{
    this.score = score;
}

public synchronized void updateScore(double change)
{
    score += change;
    System.out.println("ID: " + id + "\t" + " Score: " + df.format(score));
}

/* (non-Javadoc)
 * @see java.lang.Object#toString()
 */
@Override
public String toString()
{
    return id + "\t" + "\t" + score;
}

}

...