Задать вопрос
@thatmaniscool

С каким количеством потоков можно работать с Exchanger class в Jave?

Для примера приведу небольшую программку, где класс Exchanger обменивается данными и выполняется небольшая инструкция.
import java.util.concurrent.*;
public class MyClass {
	private static final Exchanger <Boolean> exc = new Exchanger <Boolean> ();
	private static final ExecutorService exec = Executors.newCachedThreadPool();
	
	public static void main (String [] args)throws InterruptedException {
		exec.execute(new MyRun ("Thread-1", true));
		TimeUnit.MILLISECONDS.sleep(100);
		exec.execute(new MyRun ("Thread-2", false));
		TimeUnit.SECONDS.sleep(7);
		exec.shutdownNow();
		
	}
	
	
	public static class MyRun implements Runnable {
		private boolean key;
		private String name;
		
		public MyRun (String name, boolean key){
			this.name = name;
			this.key = key;
		}
		public void run (){
			try{
				while (!Thread.interrupted()){
					if (key)
						System.out.println (name + " works");
					key = exc.exchange(key); // Обменивается данными с другим потоком.
					TimeUnit.MILLISECONDS.sleep(1500);
				}
			} catch (InterruptedException e){
				System.out.println (name + " was stopped!");
			}
		}
	}
}

Вопрос у меня в следующем, возможно ли использовать большее количество потоков, нежели только два?
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы