Created
December 5, 2017 11:49
-
-
Save ihopeudie/a4665797f0cdc2096401c13c6b2be5e6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task26.task2610; | |
import java.util.concurrent.BlockingQueue; | |
public class Consumer implements Runnable{ | |
private BlockingQueue queue; | |
public Consumer(BlockingQueue queue) { | |
this.queue = queue; | |
} | |
public void run() { | |
while (true) { | |
try { | |
consume(queue.take()); | |
} catch (InterruptedException e) { | |
e.printStackTrace(); | |
} | |
} | |
} | |
public void consume(Object x) { | |
System.out.println(x.toString()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task26.task2610; | |
import java.util.concurrent.BlockingQueue; | |
public class Producer implements Runnable { | |
private BlockingQueue queue; | |
public Producer(BlockingQueue queue) { | |
this.queue = queue; | |
} | |
public void run() { | |
try { | |
int i = 0; | |
while (true) { | |
queue.put(String.valueOf(i++)); | |
Thread.sleep(300); | |
} | |
} catch (InterruptedException e) { | |
System.out.println(String.format("[%s] thread was terminated", Thread.currentThread().getName())); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task26.task2610; | |
import java.util.concurrent.ArrayBlockingQueue; | |
import java.util.concurrent.BlockingQueue; | |
import java.util.concurrent.ExecutorService; | |
import java.util.concurrent.Executors; | |
/* | |
Мир скучен для скучных людей | |
Разберись с BlockingQueue. | |
По образу и подобию класса Producer создай класс Consumer, который будет выводить данные из BlockingQueue в консоль. | |
Требования: | |
1. Класс Consumer должен быть создан в отдельном файле. | |
2. Класс Consumer должен реализовывать интерфейс Runnable. | |
3. Класс Consumer должен содержать приватное поле BlockingQueue queue. | |
4. Класс Consumer должен содержать конструктор с одним параметром, инициализирующий поле queue. | |
5. Метод run() класса Consumer должен постоянно выводить на экран значения из очереди. | |
*/ | |
public class Solution { | |
public static void main(String[] args) throws Exception { | |
BlockingQueue queue = new ArrayBlockingQueue(32); | |
Producer producer = new Producer(queue); | |
Consumer consumer = new Consumer(queue); | |
ExecutorService executorService = Executors.newCachedThreadPool(); | |
executorService.submit(producer); | |
executorService.submit(consumer); | |
Thread.sleep(2000); | |
executorService.shutdownNow(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment