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

多线程的性能优化解决

要求: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日
  • 展开全部

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端