Объект программы состоит в том, чтобы отправить три строки в три отдельных потока и распечатать каждый символ строки по символу. Я хочу, чтобы между каждой входной строкой была пустая строка, но я не уверен, где помещать каждый поток в состояние ожидания или останавливать его, чтобы выход изменялся. В большинстве случаев это комбинация струн перепуталась, иногда один отделяется и выходит аккуратно.Разделение планирования потоков Java
import java.util.Scanner;
public class Threader {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Hello");
String str = scan.nextLine();
String str2 = scan.nextLine();
String str3 = scan.nextLine();
Thread A = new Thread(new MyRunnable(str));
A.start();
Thread B = new Thread(new MyRunnable(str2));
B.start();
Thread C = new Thread(new MyRunnable(str3));
C.start();
}
}
public class MyRunnable implements Runnable {
String str, str2, str3;
public MyRunnable(String str){
this.str = str;
}
@Override
public void run() {
for (int i = 0; i < str.length(); i++){
System.out.println(str.charAt(i));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Если вы хотите достичь определенного разделения, вам обязательно придется использовать wait/notify или некоторые виды семафора. – EJP
Я не понимаю, вы хотите, чтобы каждый поток печатал строку, по одному символу в строке, но вы не хотите, чтобы другой поток печатался, будет ли это делать? – Asoub