Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何使用rx java跟踪文件?_Multithreading_Observable_Rx Java_Reactive Programming_Observer Pattern - Fatal编程技术网

Multithreading 如何使用rx java跟踪文件?

Multithreading 如何使用rx java跟踪文件?,multithreading,observable,rx-java,reactive-programming,observer-pattern,Multithreading,Observable,Rx Java,Reactive Programming,Observer Pattern,使用rxjava软件包,如何创建文件 代码: 我想在写入文件时解析它。首先,需要一个来自Java的totail-f foo.log。我不确定是否专门使用RxJava。但是您可以采用通用的Java解决方案并与RxJava结合。当然,这取决于你希望如何获得信息 一个基本选项是使用openInputStream(或某些流包装器类或读取器类)跟踪文件。 使用正在运行的线程,您可以使用InputStream.read等待文件,或使用InputStream.available采样新字节数。在RxJava中,

使用
rxjava
软件包,如何创建文件

代码:

我想在写入文件时解析它。首先,需要一个来自Java的to
tail-f foo.log

我不确定是否专门使用RxJava。但是您可以采用通用的Java解决方案并与RxJava结合。当然,这取决于你希望如何获得信息

一个基本选项是使用open
InputStream
(或某些流包装器类或读取器类)跟踪文件。 使用正在运行的线程,您可以使用
InputStream.read
等待文件,或使用
InputStream.available
采样新字节数。在RxJava中,可以使用IO调度程序。在读完整行之后,只需从线程中调用一些观察者

在核心Java中,它可能看起来像:

class ObserveTask implements Runnable {

    private File file;
    private Listener listener;

    @Override
    public void run() {
        try (InputStream stream = new FileInputStream(file); 
            BufferedReader reader = new BufferedReader(stream)) {
            while (!Thread.interrupted()) {
                String line = reader.readLine();
                listener.onNewLine(line);
            }
        }
    }
}
现在只需运行任务:

Scheduler scheduler = Schedulers.newThread();
Scheduler.Worker worker = scheduler.createWorker();
worker.schedule(new ObserveTask());
当然,这只是一个基本的例子

您可以将任务拆分为多个部分,每次运行时,都会检查字节,而流保持打开状态。当然,这是危险的,因为让溪流像那样打开可能会导致泄漏

更高级的解决方案可以包括使用。

我不确定是否专门使用RxJava。但是您可以采用通用的Java解决方案并与RxJava结合。当然,这取决于你希望如何获得信息

一个基本选项是使用open
InputStream
(或某些流包装器类或读取器类)跟踪文件。 使用正在运行的线程,您可以使用
InputStream.read
等待文件,或使用
InputStream.available
采样新字节数。在RxJava中,可以使用IO调度程序。在读完整行之后,只需从线程中调用一些观察者

在核心Java中,它可能看起来像:

class ObserveTask implements Runnable {

    private File file;
    private Listener listener;

    @Override
    public void run() {
        try (InputStream stream = new FileInputStream(file); 
            BufferedReader reader = new BufferedReader(stream)) {
            while (!Thread.interrupted()) {
                String line = reader.readLine();
                listener.onNewLine(line);
            }
        }
    }
}
现在只需运行任务:

Scheduler scheduler = Schedulers.newThread();
Scheduler.Worker worker = scheduler.createWorker();
worker.schedule(new ObserveTask());
当然,这只是一个基本的例子

您可以将任务拆分为多个部分,每次运行时,都会检查字节,而流保持打开状态。当然,这是危险的,因为让溪流像那样打开可能会导致泄漏

更高级的解决方案可以包括使用