求帮助编写以下java代码,2小时内回我
求帮助编写以下java代码,2小时内回我有两个线程A和B。A线程负责控制,B线程负责计算从小到大的质数并输出。具体功能要求如下:(1)A线程负责监听用户的输入,用户可以输...
求帮助编写以下java代码,2小时内回我有两个线程A和B。A线程负责控制,B线程负责计算从小到大的质数并输出。具体功能要求如下:
(1)A线程负责监听用户的输入,用户可以输入start、stop、pause、continue、exit控制B线程的输出功能。
(2)A线程负责将以上命令发送给B线程,B线程一方面在计算从小到大的质数,一方面接收A线程发来的命令进行屏幕输出。
(3)B线程收到start后,开始(或者重新开始)计算,并输出从2、3开始的质数,直到收到stop后停止(停止后需要记录计算的中间态以便continue)。
(4)B线程收到pause后,暂停屏幕输出(暂停后需要记录计算的中间态以便continue)。
(5)B线程收到continue后,继续上一次的计算和输出。
(6)B线程收到exit后,进程退出。 展开
(1)A线程负责监听用户的输入,用户可以输入start、stop、pause、continue、exit控制B线程的输出功能。
(2)A线程负责将以上命令发送给B线程,B线程一方面在计算从小到大的质数,一方面接收A线程发来的命令进行屏幕输出。
(3)B线程收到start后,开始(或者重新开始)计算,并输出从2、3开始的质数,直到收到stop后停止(停止后需要记录计算的中间态以便continue)。
(4)B线程收到pause后,暂停屏幕输出(暂停后需要记录计算的中间态以便continue)。
(5)B线程收到continue后,继续上一次的计算和输出。
(6)B线程收到exit后,进程退出。 展开
1个回答
展开全部
package com.qtc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.Thread.State;
import java.util.Arrays;
import java.util.Scanner;
public class Test {
/**
*
* @param args
* 有两个线程A和B。A线程负责控制,B线程负责计算从小到大的质数并输出。具体功能要求如下:
(1)A线程负责监听用户的输入,用户可以输入start、stop、pause、continue、exit控制B线程的输出功能。
(2)A线程负责将以上命令发送给B线程,B线程一方面在计算从小到大的质数,一方面接收A线程发来的命令进行屏幕输出。
(3)B线程收到start后,开始(或者重新开始)计算,并输出从2、3开始的质数,直到收到stop后停止(停止后需要记录计算的中间态以便continue)。
(4)B线程收到pause后,暂停屏幕输出(暂停后需要记录计算的中间态以便continue)。
(5)B线程收到continue后,继续上一次的计算和输出。
(6)B线程收到exit后,进程退出。
*/
static boolean a=false;
static int i=2;
static int d=2;
static boolean flag=true;
static boolean flag2=true;
public static void main(String[] args) {
Thread B=new Thread(new Runnable() {
@Override
public void run() {
while(flag2==true){
if (flag) {
for(;flag==true && flag2==true;i=i+1){
for (int j=2;j<i;j++) {
if (i>2&&i%j==0) {
a=true;
}
}
if (a==false) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
d=i;
if (flag){
System.out.print(i+" ");
}
}
a=false;
}
}
else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println("B线程执行结束,不可以通过start重新启动");
}
});
Thread A=new Thread(new Runnable() {
@Override
public void run() {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String b=null;
try {
while((b=br.readLine())!=null){
if (b.equals("start")) {
if (B.getState().equals(Thread.State.NEW)) {
B.start();
}
else {
i=2;
}
}
if (b.equals("stop")) {
flag=false;
d=i;
}
if (b.equals("pause")) {
flag=false;
d=i;
}
if (b.equals("continue")) {
flag=true;
i=d;
}
if (b.equals("exit")) {
flag2=false;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
A.start();
}
}
老铁 我想说我看到题目的时候已经过了一个小时了,然后又是新手(ˇˍˇ) ,考虑俩小时,哈哈哈,再然后,给的奖励也太少了!!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询