Skip to main content

Syllabus

Course Description​

An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memory and distributed architectures. Students will learn how to structure, implement, and debug concurrent programs.

[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W] Prereq: CS 350 or SE 350; Computer Science students only

Course Source​

Lessons: Parallel, Concurrent, and Distributed Programming in Java Specialization

Supplies:

Concurrency vs Parallelism

Java Concurrency and Multithreading Tutorial

Core Concept​

The following content based on : Concurrency vs Parallelism

Parallel Execution​

Making progress on more than one task at the exact same time. Parallel

Concurrency​

Making progress on more than one task - seemingly at the same time. Concurrent

Parallel Concurrent Execution​

Making progress on more than one task - seemingly at the same time - on more than one CPU. ParallelConcurrent

Parallelism​

Splitting a single task into subtasks which can be executed in parallel. Parallelism

Issue of Concurrency​

Issues

Thread Pool​

If you need to execuate many tasks:

  1. You can assign each task with a specific Thread.
  2. You can assign all the tasks to a Thread Pool with pre-created Threads execute the tasks one by one. Pool