2013-08-26 2 views
0

Я делаю очень простой пример поисковой системы, где я хочу предоставить предложения о том, что пользователь может искать в режиме реального времени (точно так же, как Google).Параллельные потоки для проверки ввода в реальном времени

Так что я планирую использовать 2 разных потока, 1 для запуска фрейма и один, который запускает метод для проверки ввода пользователя и адаптации предложений.

Но у меня логические проблемы здесь, потому что мне нужно использовать один и тот же объект в обоих runnables, и, очевидно, это не может работать:

 Runnable r = new Runnable() { 
     public void run() { 
      Suchfenster inst = new Suchfenster(); 
     } 
     }; 

    Runnable r2 = new Runnable() { 

     @Override 
     public void run() { 
      //check(inst); -> I need to use the created frame here 
     } 
    }; 

Единственная другая идея, я бы бы :

Suchfenster inst; 
    Runnable r = new Runnable() { 
     public void run() { 
      inst = new Suchfenster(); 
     } 
    }; 

Это, конечно же, не работает.

Что было бы правильным путем?

+2

Это происходит в Swing ? В этом случае используйте прослушиватель событий. Когда вы вводите что-то, фоновый поток может искать материал и отображать его. –

+0

@SotiriosDelimanolis Спасибо, я попробую, что –

ответ

0

Почему бы вам не сделать inst = new Suchfenster() снаружи runnable? таким образом вы можете поделиться им между двумя runnables ... Еще одна вещь - помните, что вам нужен потокобезопасный экземпляр, если вы хотите использовать один и тот же экземпляр в обоих потоках ...

+0

Ну, я действительно объявил 'inst = новый Suchfenster()' снаружи, но теперь кадр не в потоке, но мне нужно два параллельных потока для моей идеи работать –

+0

Я не знаю, я действительно понимаю, что ты говоришь .. может быть, если ты сможешь опубликовать свой код здесь, я буду более полезен ...? –

+0

Все в порядке, я просто попробую, что предложил другой парень, спасибо за ваше время, хотя –

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