我无法理解为什么跟随if块执行.如何评估if条件?
public class Test
{
public static void main(String[] args)
{
if (true || (false || true) && false)
{
System.out.println("How does this condition becomes true.");
}
if (false && (false || true) || true)
{
System.out.println("Same with this condition, why is it true.");
}
}
}
Run Code Online (Sandbox Code Playgroud) 我是反应式编程世界的新手,我正在尝试使用 rxjava 2 创建一个简单的背压感知消息处理。
以下是我试图实现的工作流程:
可流动的连续字符串流。
执行一个耗时的操作并将消息更改为另一个字符串
执行另一个耗时的操作。
现在我使用以下代码:
{
Flowable.create(subscriber -> {
some_stream.forEach(data -> {
subscriber.onNext(data);
});
}, BackpressureStrategy.BUFFER).
subscribeOn(Schedulers.io()). // Data emission will run io scheduler
observeOn(Schedulers.computation()). // Map operation will run on computation scheduler
map(val -> Time_Consuming_Task(val)). // Task returns another string
observeOn(Schedulers.io()). / Next consumer will run on computation scheduler
subscribe(val -> Another_Time_Consuming_Task(val));
}
Run Code Online (Sandbox Code Playgroud)
现在对于小型操作,我没有看到任何与背压相关的问题。
但是对于大流,我不知道它会如何表现。
现在我的问题是:-
BackpressureStrategy.BUFFER的默认缓冲区大小是多少,数据在哪里缓冲?
如果我想在每次耗时任务之前创建两个背压缓冲区,我应该使用onBackpressureBuffer 操作符吗?
如果缓冲区已满,我不想丢失数据,我想等待或在这种情况下什么?
我正在执行 JStack 命令以在特定时间间隔进行线程转储。
我观察到每当 JStack 执行时,目标进程上的所有线程都会停止。在查看我的 log4j 2 日志后,我得出了这个结论,我发现在 JStack 运行期间没有日志记录。
有人能告诉我 JSTack 会挂起/停止目标进程中的所有线程吗?
java ×3
backpressure ×1
conditional ×1
if-statement ×1
java-8 ×1
jstack ×1
jvm ×1
jvm-hotspot ×1
rx-java ×1
stream ×1