Я наконец-то загитхабил свой код по проблеме Дейкстры спящий паракмахер - с пулэкзекютором смешно получилось надо было просто переписать две строчкиcrypto5 wrote:Вот свой вариант набросал:
Code: Select all
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class Barber { static ExecutorService barber = new ThreadPoolExecutor( 1, 1, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(20), new ThreadPoolExecutor.AbortPolicy()); public static void main(String args[]) { for(int i = 0; i < 100; i ++) { new Client().start(); } } static class Client extends Thread { @Override public void run() { Future<Void> v = barber.submit(new Callable<Void>() { @Override public Void call() throws Exception { Thread.currentThread().sleep(1000); return null; } }); try { v.get(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } } }
Code: Select all
executor = Executors.newFixedThreadPool(BARBERS_NUMBER);
for (int i = 1; i <= BARBERS_NUMBER; i++)
executor.submit(new Barber(
BlockingQueueSleepingBarbersPoolExecutor.queue, Integer.toString(i)));
Ну и спряг Дейкстру с Кафкой по приколу - походу занятно вышло
https://vyatkins.wordpress.com/2015/03/ ... r-problem/