求帮助编写以下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后,进程退出。
展开
 我来答
东来东往w7
2017-06-17 · 超过21用户采纳过TA的回答
知道答主
回答量:45
采纳率:100%
帮助的人:14.5万
展开全部
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();

}

}

老铁 我想说我看到题目的时候已经过了一个小时了,然后又是新手(ˇˍˇ) ,考虑俩小时,哈哈哈,再然后,给的奖励也太少了!!!!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式