在Java中使用线程进行并行编程
让我们说在Java中,使用ExecutorService我创建一个4线程的线程池并提交给它说10个任务,这意味着4个线程将开始执行4个任务,其他6个任务将由线程获取,当任何线程完成其任务. 假设我有一个具有4个内核的四核处理器,我知道一个线程可以在一个内核上运行(这里没有采用超线程概念)所以我的所有4个线程并行工作,1个内核运行1个线程?这不是一个并行编程吗? 编辑:Source of reading – 这是Java 8播放列表,在第1章中提到可以从Java 7开始进行并行编程. 解决方法
你的结局存在误解.
那是错的. Join / Fork语句只是另一个抽象层,它为您提供了更强大的概念 – 与“裸机”线程相比.
您已清楚地概述了您的任务将进入支持4个线程的池中;并且您的硬件也应该支持4个线程.这样的工作将同时进行.请不要:Fork / Join与ExecutorService不同.相反,两者都是先进的概念;旨在使您更容易“并行编程”. 在简要回听了问题中链接的视频之后:该教程是关于Java8添加了流的事实,并且在并行流之上(使用下面的Fork / Join框架 – 这是Java 7引入的). 无论如何,该视频强调与早期版本的Java相比,并行程序变得更加简单.所以它根本不是介绍以前不可能的东西 – 而是提供新的更强大的抽象,使得更容易做这些事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |