
The knowledge of multi-core programming helps in the utilisation of multiple cores at the same time to execute a task and thereby achieving scalability and increase in performance. Different parallelism models exist such as task-level parallelism, bit-level parallelism, instruction-level parallelism, unstructured parallelism depending on the data or control centric nature of tasks. The focus of this work is task-level parallelism. Programming languages such as Java provide APIs to divide tasks into subtasks and execute over multiple cores rather than on single core. Java provides three prominent APIs: Executor, Fork-Join and Parallel Streams frameworks to achieve task-level parallelism. Since each framework has its merits and demerits, the choice of a framework depends on the task and the interdependencies between the sub-tasks. This paper has surveyed the structure of the data and the algorithm underlying the task in the light of three aforementioned frameworks and provide guidelines to choose one that suits the task at hand. This study also provides insights into the features and APIs supported in Java to achieve parallelism.
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 5 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Top 10% | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
