2015-04-25 3 views
0

Я новичок в программировании на Java. Я, работая над домашним заданием, которое мы должны использовать в нашем коде. Я прочитал много ресурсов, но я не знаю, как решить мою проблему. У него есть 5 частей, если кто-то поможет мне понять первую часть, я уверен, что могу сделать все остальное самостоятельно. Не могли бы вы помочь мне, что делать? Описание первой части:Генератор чисел с использованием BlockingQueue

Будет одна тема, задача которой - раздавать номера для тестирования. Этот поток будет запускать код в классе с именем NumberGenerator. Этот поток должен использовать экземпляр класса, который реализует интерфейс Java BlockingQueue как метод хранения доступных номеров и совместного использования с другими потоками, которые в нем нуждаются. У вас будет только один экземпляр этого класса, запущенный в потоке, и вы не сможете запустить его в основном потоке.

Вот код:

/** 
* The NumberGenerator class is used to hand out numbers that will be checked by 
* other threads. 
*/ 
public class NumberGenerator { 
    /** The biggest number we plan to check */ 
    private final int biggestNumberToCheck; 

    /** 
    * A queue where we will place the numbers that we generate, which need to 
    * be checked 
    */ 
    private final BlockingQueue<Integer> candidateQueue; 
    private final int smallesrNumberStart; 

    // TODO: What other state do we need? 

    /** 
    * Create a new instance of the NumberGenerator class, which will hand out 
    * numbers that need to be checked. 
    * 
    * @param smallest 
    *   the smallest number to check 
    * @param biggest 
    *   the biggest number to check 
    * @param queue 
    *   the queue that we will put numbers to check into 
    */ 
    public NumberGenerator(int smallest, int biggest, 
      BlockingQueue<Integer> queue) { 
     biggestNumberToCheck = biggest; 
     candidateQueue = queue; 
     smallesrNumberToStart = smallest; 
    } 

    // TODO: You can decide how you want to turn this into something runnable as 
    // a thread. 

} 
+0

Я положил описание первой части, ее номер генератора. – Aryan

+0

да, я просто видел ваше редактирование :) – Diego

ответ

0

Для создания потока у вас есть два options:

  1. проходят от Thread
  2. реализовать Runnable

Итак, выбрать один. В любом случае вы должны переопределить/реализовать метод run, который содержит код, который будет запущен в созданном потоке.

IIUC, в этом случае метод генерирует случайные числа и помещает их в очередь.

Затем в методе main, будет экземпляр класса NumberGenerator реализованных с соответствующей реализацией BlockingQueue, выбрать один, есть several из них.

И наконец, вызовите метод start экземпляра Thread, чтобы начать генерировать числа.

+0

Так что я должен написать генератор случайных чисел внутри метода запуска, а затем в основном методе, который я должен назвать началом, верно? – Aryan

+0

Извините, я добавил слово random. В инструкциях ничего не говорится о том, какое число производить. Вы можете даже поставить всегда одинаковое число в очереди. И да, в главном вызове начните запускать поток – Diego

+0

Спасибо, У меня есть еще один вопрос. Как я могу использовать кандидатQueue (который на самом деле я храню все числа в нем) в другом классе? – Aryan

Смежные вопросы