Передача переменных в поток на ходу? - PullRequest
0 голосов
/ 19 декабря 2011

Я не уверен, что я просто что-то здесь упускаю, но возможно ли передать переменную в работающий Thread в Java? Переменные могут измениться, и, возможно, их потребуется повторно отправить в один и тот же поток.

Любые уроки по этому вопросу или примеры будут великолепны.

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

У вас есть два простых варианта:

  • ConcurrentLinkedQueue: это может действовать как потокобезопасная труба между двумя потоками.В потоке подаёт очередь по мере необходимости, другой читает по мере необходимости, либо блокируя, либо опрашивая.

  • использует общие переменные и флаги и использует примитивы синхронизации, чтобы гарантировать, что поток не читает, покадругой пишет.

1 голос
/ 19 декабря 2011

Обычно способ сделать это состоит в том, чтобы поток знал о поточно-ориентированной структуре, о которой также знают другие потоки. Взгляните на java.util.concurrent классы.

Например, оба потока знают об экземпляре BlockingQueue<Foo>. Один поток помещает Foo s в очередь, а другой снимает Foo s с этой очереди и что-то с ними делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...