亲爱的,亲爱的
我有下面的简单代码
class App {
public static void main(String[] args) {
ArrayList<Integer> myList = new ArrayList<>();
myList.add(7);
myList.add(18);
myList.add(10);
myList.add(24);
myList.add(17);
myList.add(5);
Stream<Integer> stream = myList.stream();
stream = stream.filter(n -> n > 10); // it returns a stream of elements more than 10
stream.forEach(n -> System.out.print(n + " "));
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码的功能是它过滤调用流,然后打印所有超过10的元素.Predicate中的测试方法为我们做了..那没关系..但过滤器的实际实现在哪里()方法确实返回超过10的"STREAM"..那是我不明白的!! !! 这个问题在某种程度上也适用于forEach()方法..如何迭代抛出流..
由于filter()和forEach()方法在接口流中是抽象的,因此没有实现.
我需要一个解释..
我在操作系统中遇到了与我的代码行为混淆的问题.现在你们都有很多方法可以为多线程进行同步,以便无论如何都能获得正确的值!
为什么我总是得到正确的价值而不使用同步的方式??? !
例如,查看下面的代码
在常规行为中,下面的程序应该在几秒后终止..因为有十个线程访问同一个变量并将其递增一个......并且在某些情况下应该导致计数值不是100000 ...这将停止循环..我在20分钟内运行此代码..它完美地工作..
任何人都可以告诉我发生了什么:D ??
我的操作系统是Windows 7,我正在使用eclipse Kepler .. JVM是8 ..而我的CPU不是双核......它是一个常规的独奏......有2.4 GHZ ......
public class Worker {
int count;
public static void main(String[] args) {
new Worker().run();
}
public void run() {
do {
count = 0;
Thread thread1 = new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 10000; i++) {
count++;
}
}
});
Thread thread2 = new Thread(new Runnable() {
public void run() {
for (int i = …
Run Code Online (Sandbox Code Playgroud)