Java 如何使用进程打开线程?
我有一个线程要用一些PrintWriter写入文件Java 如何使用进程打开线程?,java,multithreading,process,Java,Multithreading,Process,我有一个线程要用一些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.setPr
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());
}
}
}
我尝试通过两个进程写入一个文件。我怎么能做到
Process process1=新的ProcessBuilder(“p1”、“.start()”).start()
您正在告诉操作系统运行名为“p1”的程序,并将“.start()”作为其第一个命令行参数
如果您使用的是Linux,则与在shell窗口中键入“p1.start”相同。如果您在Windows上,则与在CMD.EXE窗口中键入的相同。不管怎样,它都不会做你认为它会做的事
NThread p1中的p1
=新的NThread(Thread.NORM\u优先级+4,printWriter)
是Java程序中的一个变量。它引用了一个可用于启动线程的对象,这不会导致名为p1的程序神奇地出现在$PATH(或%PATH%,如果您在Windows上。)在编写程序之前,您必须阅读java文档。@user3660090,您还没有说问题出在哪里。为什么需要两个过程?如果您希望在Java中执行Unix fork()系统调用之类的操作,那就太不走运了。没有与之相当的Java。Java ProcessBuilder类可用于启动另一个进程,但它仅限于启动可以从Unix shell或Windows CMD提示符启动的进程。如果您编写了一个可以从shell/CMD提示符启动的单独程序,那么您可以使用ProcessBuilder从Java程序启动它。首先,我编写了一个类线程,用于同时由两个线程一次写入一个文件,但现在我需要在进程上打开此线程,以便在windows任务管理器上显示此线程。在java上,两个进程同时写入一个文件的方式是什么?