我有一个使用一些PrintWriter
写入文件的线程class NThread implements Runnable {
Thread t;
PrintWriter w;
private volatile boolean running = true;
public NThread(int p, PrintWriter w) {
t = new Thread(this);
this.w = w;
t.setPriority(p);
}
public void run() {
while (running) {
w.println("Id: " + t.getId());
}
}
public void stop() {
running = false;
}
public void start() {
t.start();
}
}
我尝试使用新进程打开这个帖子。
public class FileWrite {
public static void main(String[] args) {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
Thread ref_mainThread=Thread.currentThread();
try {
PrintWriter printWriter = new PrintWriter("C:\\write.txt");
printWriter.println("Id main thread" + ref_mainThread);
NThread p1=new NThread(Thread.NORM_PRIORITY + 4,printWriter);
Process process1 = new ProcessBuilder("p1",".start()").start();
try {
Thread.sleep(1000);
}
process1.destroy();
printWriter.close();
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
我尝试通过两个进程在一个文件中写入。我怎么能这样做?
答案 0 :(得分:0)
Process process1 = new ProcessBuilder(“p1”,“。start()”)。start();
您告诉操作系统运行名为“p1”的程序,其中“.start()”作为其第一个命令行参数。
如果您使用的是Linux,则与在shell窗口中键入“p1 .start”相同。如果您使用的是Windows,则与在CMD.EXE窗口中键入的内容相同。无论哪种方式,它都不会按照你认为的那样去做。
p1
中的NThread p1=new NThread(Thread.NORM_PRIORITY + 4,printWriter);
是Java程序中的变量。它引用一个可用于启动线程的对象这一事实不会导致名为p1的程序神奇地出现在$ PATH上(如果你在Windows上,则会出现%PATH%。)