清风徐来#¥%…… 2021-08-11 10:15 采纳率: 0%
浏览 627
已结题

多线程的性能优化解决

要求:1000次循环在六秒左右,目前是九秒多,不到十秒。cmd执行命令的参数path是动态的,是批量执行脚本的命令,这里只是个demo。不同设备保证不会有乱码。回复里最好有现在慢的主要原因,解决思路及优化后的代码

static ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2);
    @GetMapping("/run")
    public void run() {
        String path = "ipconfig";
        executorService.execute(() -> {
            try {
                Process process;
                process = new ProcessBuilder("cmd.exe", "/c", path).start();
                readStream(process.getErrorStream());
                readStream(process.getInputStream());
                //System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS").format(new Date()));
            } catch (IOException e) {
                System.out.println("运行错误:" + e.getMessage());
                e.printStackTrace();
            }
        });
    }

    public void readStream(InputStream is) {
        String line;
        BufferedReader input;
        try {
            input = new BufferedReader(new InputStreamReader(is, "gbk"));
            StringBuilder CmdReturn = new StringBuilder();
            line = input.readLine();

            while (line != null) {
                line = input.readLine();
                CmdReturn.append(line);
            }
            //System.out.println(CmdReturn);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

  • 写回答

10条回答 默认 最新

  • java叶新东 领域专家: 后端开发技术领域 2021-08-12 16:26
    关注

    把完整代码贴出来吧,

    评论

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 修改了问题 8月13日
  • 修改了问题 8月13日
  • 修改了问题 8月13日
  • 展开全部