Если вы хотите, чтобы ваша программа работала одновременно, вам понадобятся потоки. 1
Самый простой способ (не вдаваясь в анонимные классы и т. Д.), Вероятно, состоит в том, чтобы разделить один или другой ваш процесс на отдельный класс, который реализует Runnable
. Например, создайте класс Counter
следующим образом:
public class Counter implements Runnable {
public void run ( ) {
int i = 0;
while(true) {
System.out.print(i);
i++;
}
}
}
Затем, перед вашим другим кодом, вы создадите новый Thread
следующим образом:
Counter counter = new Counter( );
Thread thread = new Thread(counter);
thread.start( );
...
// The rest of your code goes here...
Этот дополнительный поток будет выполняться параллельно с исходным потоком, который теперь перешел к обработке вашего кода сокетов. Конечно, вы могли бы также создать новый поток для этого, если хотите, но это немного избыточно, поскольку у вас уже есть два потока (новый и оригинальный).
Это действительно просто царапина на поверхности резьбы. Это гораздо больше, чем я могу дать в ответе, поэтому я настоятельно рекомендую прочитать связанные документы, прочитать статью thread в Википедии и найти другую информацию, чтобы получить лучшее представление о том, как это работает.
1: Если ваши потоки работают на одном и том же процессоре, они на самом деле не будут работать одновременно, они просто будут казаться таковыми.