我正在阅读Java 8,特别是"Streams API".我想知道流是如何懒惰的?
我相信流只是作为一个库添加,并且没有对语言进行任何更改来支持懒惰.另外,如果有人告诉我这是通过反思实现的,我会感到震惊.
我的理解: 与Swing中的大多数组件/操作不同,对JComponent.repaint()的调用是线程安全的,即虽然重新绘制请求来自另一个线程(即不是来自EDT),但实际绘制仅在EDT中进行.下面的代码片段演示了这一点.
public class PaintingDemo {
public static void main(String[] args) {
final JFrame frame = new JFrame();
final JPanel p = new MyPanel();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.add(p, BorderLayout.CENTER);
frame.setSize(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
new Thread("MyThread") {
public void run() {
while (true) {
// Below statements are important to show the difference
p.repaint();
p.paintImmediately(p.getBounds());
try {
Thread.sleep(1000);
} catch(Exception e) {}
}
}
}.start();
}
}
class MyPanel extends JPanel {
@Override
public …Run Code Online (Sandbox Code Playgroud) 我不是函数式编程(FP)方面的专家。事实上,我才刚刚开始学习。
所以,真正的问题是:因为 FP 源自数学而不是冯。诺依曼机,这种编程风格/范式可以用来对量子计算机进行编程吗?这更多地是从应用程序程序员的角度来看的,因为低级机器指令可能完全不同。