如何使用进程打开线程?

时间:2014-10-30 14:10:16

标签: 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.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());
        }
    }
}

我尝试通过两个进程在一个文件中写入。我怎么能这样做?

1 个答案:

答案 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%。)