Java 如何使用进程打开线程?

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

我有一个线程要用一些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());
        }
    }
}
我尝试通过两个进程写入一个文件。我怎么能做到

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上,两个进程同时写入一个文件的方式是什么?