Java线程调度分离
程序的目标是将三个字符串发送到三个单独的线程,并让它们逐个字符地打印出每个字符串。我希望在每个输入字符串之间有一个空行,但我不确定应该将每个线程置于等待状态还是停止它,以使输出发生变化。大多数时候,它是一个杂乱的字符串组合,有时一个分开,整齐地出现Java线程调度分离,java,string,multithreading,scheduling,runnable,Java,String,Multithreading,Scheduling,Runnable,程序的目标是将三个字符串发送到三个单独的线程,并让它们逐个字符地打印出每个字符串。我希望在每个输入字符串之间有一个空行,但我不确定应该将每个线程置于等待状态还是停止它,以使输出发生变化。大多数时候,它是一个杂乱的字符串组合,有时一个分开,整齐地出现 import java.util.Scanner; public class Threader { public static void main(String[] args) { Scanner scan = new Sc
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();
}
}
}
}
import java.util.Scanner;
公营螺纹机{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“你好”);
String str=scan.nextLine();
字符串str2=scan.nextLine();
字符串str3=scan.nextLine();
线程A=新线程(新MyRunnable(str));
A.开始();
线程B=新线程(新MyRunnable(str2));
B.开始();
线程C=新线程(新MyRunnable(str3));
C.开始();
}
}
公共类MyRunnable实现Runnable{
字符串str、str2、str3;
公共MyRunnable(字符串str){
this.str=str;
}
@凌驾
公开募捐{
对于(int i=0;i
这个怎么样
import java.util.Scanner;
public class Threader {
public Threader(String str, String str2, String str3) {
Thread A = new Thread(new MyRunnable(str));
Thread B = new Thread(new MyRunnable(str2));
Thread C = new Thread(new MyRunnable(str3));
A.start();
B.start();
C.start();
}
public synchronized void printString(String str) {
for (Character c : str.toCharArray()) {
System.out.println(c);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println();
}
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();
new Threader(str, str2, str3);
}
class MyRunnable implements Runnable {
private String str;
public MyRunnable(String str) {
this.str = str;
}
@Override
public void run() {
printString(str);
}
}
}
这是一个答案,拼写并用空格分隔每个字符串。有趣的是,我的老师只是想让他们同时开始并输出所有混乱的内容,只是为了演示一个比赛条件p但是在这里,一对夫妇在睡觉。虽然很难看,但很管用
import java.util.Scanner;
public class Threader {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter 3 lines...Suuuuh dude");
/*
* Strangs
*/
String str = scan.nextLine();
String str2 = scan.nextLine();
String str3 = scan.nextLine();
/*
* Intantiate threads holding runnable objects
*/
Thread A = new Thread(new MyRunnable(str));
Thread B = new Thread(new MyRunnable(str2));
Thread C = new Thread(new MyRunnable(str3));
A.start();
// B.start();
// C.start();
/*
* try { A.join(); B.join(); C.join();
*
* } catch (InterruptedException e) { // TODO Auto-generated catch block
* e.printStackTrace(); }
*/
/*
* Uncomment While() Loops To Eliminate race conditions (Threads will
* sleep if previous one is Alive(Won't fight for cpu))
*/
while (A.isAlive()) {
try {
B.sleep(1000);
System.out.println("\n");
} // end try
catch (InterruptedException e) {
e.printStackTrace();
} // end catch
} // end while
B.start();
while (B.isAlive()) {
try {
C.sleep(1000);
System.out.println("\n");
} // end try
catch (InterruptedException e) {
e.printStackTrace();
} // end catch
} // end while
C.start();
}// main METHOD
}// Threader CLASS
//类w/Runnable Int
public class MyRunnable implements Runnable {
String str, str2, str3;
public MyRunnable(String str) {
this.str = str;
this.str2 = str2;
this.str3 = str3;
}
@Override
public void run() {
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
try {
// sleep 1 ms before printing next char
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // for
System.out.println("end" + str);
}// run
}
公共类MyRunnable实现Runnable{
字符串str、str2、str3;
公共MyRunnable(字符串str){
this.str=str;
this.str2=str2;
this.str3=str3;
}
@凌驾
公开募捐{
对于(int i=0;i
如果你想实现一个特定的分离,你肯定必须使用wait/notify或某种信号量。我不明白,你希望每个线程打印字符串,每行一个字符,但你不希望另一个线程打印,会有一个线程这样做吗?为什么否决?这段代码不符合OP的要求吗?