Java 进程,线程关闭应用程序
我有一个显示在系统托盘中的小应用程序 从这个应用程序中,我启动一个命令,运行另一个java程序,获取inputStream并将其显示在文本区域中Java 进程,线程关闭应用程序,java,multithreading,process,Java,Multithreading,Process,我有一个显示在系统托盘中的小应用程序 从这个应用程序中,我启动一个命令,运行另一个java程序,获取inputStream并将其显示在文本区域中 final Process process = Runtime.getRuntime().exec( runCommand ); input = new LoggingThread( process.getInputStream() ); error = new LoggingThread( process.getErrorStream() );
final Process process = Runtime.getRuntime().exec( runCommand );
input = new LoggingThread( process.getInputStream() );
error = new LoggingThread( process.getErrorStream() );
input.start();
error.start();
In loggingThread
public void run()
{
while ( running )
{
try
{
BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) );
String line = "";
try
{
while ( ( line = reader.readLine() ) != null && running )
{
JTextAreaAppender.getTextArea().append( line );
JTextAreaAppender.getTextArea().append( System.getProperty( "line.separator" ) );
}
}
finally
{
reader.close();
}
}
catch ( IOException ioe )
{
ioe.printStackTrace();
}
}
}
当我退出应用程序时,我会这样做
input.setRunning(false);
error.setRunning(false);
我还处理了TrayIcon类
在任务管理器中,我继续看到应用程序有两个线程,进程有一个线程
如果我删除进程,线程。。。应用程序正在正确关闭
如果我把
proc.destroy();
设置运行后,关闭应用程序根本不工作,TrayIcon继续显示
有什么想法吗
当我退出应用程序时,我会这样做
input.setRunning(false);
error.setRunning(false);
input.setRunning(false)
错误。setRunning(错误)
我还处理了TrayIcon类
在任务管理器中,我继续看到应用程序有两个线程,进程有一个线程
没必要那样做。如果您想在某些线程仍在执行的情况下关闭应用程序,可以将它们标记为守护进程。只需将这些行放在线程声明之后
input.setDaemon(true);
error.setDaemon(true);
将此线程标记为守护进程线程或用户线程。当运行的线程都是守护进程线程时,Java虚拟机将退出。
必须在线程启动之前调用此方法