Tag: 并发编程

Java 8:并行FOR循环

我听说Java 8提供了很多有关并发计算的实用程序。 所以我想知道什么是最简单的方法来并行给定的循环? public static void main(String[] args) { Set<Server> servers = getServers(); Map<String, String> serverData = new ConcurrentHashMap<>(); for (Server server : servers) { String serverId = server.getIdentifier(); String data = server.fetchData(); serverData.put(serverId, data); } }

并行编程==multithreading编程?

并行编程==multithreading编程?

yield()的主要用途是什么?它与join()和interrupt()有什么不同?

我对Java中yield()方法的使用有点困惑,特别是在下面的示例代码中。 我也读过yield()是用来阻止线程执行的。 我的问题是: 我相信下面的代码在使用yield()和不使用yield()时会yield()相同的输出。 它是否正确? 事实上, yield()的主要用途是什么? yield()与join()和interrupt()方法有什么不同? 代码示例: public class MyRunnable implements Runnable { public static void main(String[] args) { Thread t = new Thread(new MyRunnable()); t.start(); for(int i=0; i<5; i++) { System.out.println("Inside main"); } } public void run() { for(int i=0; i<5; i++) { System.out.println("Inside run"); Thread.yield(); } } } 使用上面的代码获得相同的输出,使用yield()和不使用yield() : Inside […]

Java中有互斥锁吗?

在Java中是否有一个互斥对象或创build一个? 我问,因为一个信号量对象初始化1许可证不帮助我。 想想这个案例: try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } 如果在第一次获取时发生exception,catch块中的释放将增加许可证,而信号量不再是二进制信号量。 请问正确的方法是? try { semaphore.acquire(); //do stuff } catch (Exception e) { //exception stuff } finally { semaphore.release(); } 上面的代码是否确保信号量是二进制的?

如何让2个JVM相互交谈

我有以下情况: 我有2个JVM进程(真正的2个java进程是分开运行的,而不是2个线程)在本地机器上运行。 我们称之为ProcessA和ProcessB 。 我希望他们相互交stream(交换数据)(例如ProcessA发送消息给ProcessB做某事)。 现在,我通过编写一个临时文件来解决这个问题,并且这些进程会定期扫描这个文件来获取消息。 我认为这个解决scheme不太好。 什么是更好的select来实现我想要的?