这与如何在Stream上短路减少基本相同?.但是,由于这个问题集中在一个布尔值流,并且其答案不能推广到其他类型并减少操作,我想问更一般的问题.
我们如何在流上进行减少,以便在遇到减少操作的吸收元件时发生短路?
乘法的典型数学例子是0.这个Stream
:
int product = IntStream.of(2, 3, 4, 5, 0, 7, 8)
.reduce(1, (a, b) -> a * b);
Run Code Online (Sandbox Code Playgroud)
将消耗最后两个元素(7
和8
),无论一旦0
遇到产品已知的事实.
我正在阅读Jakob Jenkov的一个并发教程.在此他提到有时通过等待线程可以错过notify()信号.这怎么可能?
public class MissedSignal {
//boolean wasSignalled = false;
public void doWait() {
synchronized (this) {
//if(!wasSignalled){
try {
this.wait();
} catch (InterruptedException e) {
}
//}
}
}
public void doNotify() {
synchronized (this) {
//wasSignalled = true;
this.notify();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我无法理解此代码的注释部分的使用.我认为等待线程永远不会错过notify()信号?有人可以解释一下......我是java的新手,我没有在谷歌上找到这个答案....在此先感谢
我要打印输出前三个偶数,前三个奇数后,后三个偶数后二个三个奇数
{ Like
Even Number
0
2
4
Odd Number
1
3
5
Even Number
6
8
10
Odd Number
7
9
11 }
Run Code Online (Sandbox Code Playgroud)
码:
public class OddAndEven {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i;
for(i=0;i<=50;i++){
if(i%2==1){
System.out.print("Odd Number "+i);
}
if(i%2==0){
System.out.print(" ");
System.out.println("Even Number "+i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
}