java 读取输入流的时候cpu占用很高,怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 读取输入流的时候cpu占用很高,怎么解决相关的知识,希望对你有一定的参考价值。

public class Kslad
// InputStreamReader inputStreamReader=null;
InputStream inputStream=null;
public static void main(String[] args) throws IOException
new Kslad();

public Kslad() throws IOException
Runtime rt=Runtime.getRuntime();
Process process=null;
process=rt.exec("java -jar E:\\java练习\\成品jar\\记事本.jar");
inputStream=process.getInputStream();
new Thread()
public void run()
byte[] bs=new byte[1024];
int i=0;
while(true)
try
while(inputStream.available()<1)


while((i=inputStream.read(bs))!=-1)
System.out.println(new String(bs, 0,i));

catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

finally
try
inputStream.close();
catch (IOException e)
e.printStackTrace();




.start();


运行上面的代码后,cpu占用率很高,就它一个占用很高

参考技术A 惊呆了

Thread ??

run ??

while(true) ??

oh, my god

看这个

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Processing

public static void main ( String[] args )

try

// open cmd
// Process process = Runtime.getRuntime ().exec (new String[] 
// "cmd", "/c", "dir" , null, new File ("e:/"));
Process process = Runtime.getRuntime ().exec ("cmd");
InputStreamReader isr = new InputStreamReader (process.getInputStream (), "gbk");
BufferedReader br = new BufferedReader (isr);
// next command
OutputStreamWriter osw = new OutputStreamWriter (process.getOutputStream ());
BufferedWriter bw = new BufferedWriter (osw);
bw.write ("java -jar \\"D:\\\\Program Files\\\\Java\\\\jdk1.6.0_02\\\\demo\\\\jfc\\\\Notepad\\\\Notepad.jar\\"");
bw.newLine ();
bw.flush ();
bw.close ();
osw.close ();
// read
String line = null;
while (null != ( line = br.readLine () ))

System.out.println (line);

// wait for termination
// process.waitFor ();
// process.exitValue ();
process.destroy ();
br.close ();
isr.close ();

catch (IOException e)

e.printStackTrace ();

// catch (InterruptedException e)
// 
// e.printStackTrace ();
// 

linux java cpu占用过高怎么办

命令行输入:ps -ef|grep threadname threadname:为线程名 会显示CPU的占用率 参考技术A 检查代码逻辑、语句

~~~~~~~~~~

以上是关于java 读取输入流的时候cpu占用很高,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

电脑Edge浏览器非常卡cpu占用很高怎么解决

Linux排查Java程序占用CPU很高的解决办法

openjdk占cpu高怎么处理

java程序占用CPU极高,请问是怎么回事?

linux java cpu占用过高怎么办

为啥java.exe进程总是占用很高的CPU?~~江湖救急啊!