Tags
Language
Tags
May 2024
Su Mo Tu We Th Fr Sa
28 29 30 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1

Concurrency, Multithreading And Parallel Computing In Java

Posted By: ELK1nG
Concurrency, Multithreading And Parallel Computing In Java

Concurrency, Multithreading And Parallel Computing In Java
Last updated 1/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 3.65 GB | Duration: 10h 22m

Multithreading and Concurrent Programming, Parallel Computation and MapReduce in Java + Fork-Join and Stream API

What you'll learn

Understand basic concurrency

Understand the basics of multithreading

Understand parallel processing

Able to use the concepts in real life scenarios

Understand concurrent collections

Understand synchronization and locking

Understand the Fork-Join Framework

Understand Stream API

Requirements

Basic Java (inheritance, object oriented programming)

Description

This course is about the basics of multithreading and concurrent programming with some parallel concepts. In the 21st century this topic is becoming more and more popular with the advent of Big Data and Machine Learning. We will consider the low level concepts such as threads, synchronization and locks. The second chapter will be about concurrent library: of course there are built in classes and interfaces that we can use when implementing multithreaded applications. Then we develop little programs as show-cases for multithreading: the dining-philosopher problem and the students in library simulation. Last chapter is about parallel computing and MapReduce. Section 1 - Multithreading Theory:theory behind multithreadingpros and cons of multithreadinglife cycle of a theadSection 2 - Threads Manipulation:starting threads (Runnable interface and Thread class)join keyworddaemon threadsSection 3 - Inter-Thread Communication:memory management of threadssynchronization and synchronized blockslockswait and notifyproducer-consumer problem and solutionconcurrent collectionslatch, cyclic barrier and blocking queuesdelay queue, priority queue and concurrent mapsSection 4 - Multithreading Concepts:volatile keywordsdeadlocks and livelockssemaphores and mutexesdining philosophers problemlibrary applicationSection 6 - Executors and ExecutorServices:executorsexecutor servicesSection 6 - Concurrent Collections:synchronization with Collectionslatchescyclic barriersdelay and priority queuesconcurrent HashMapsCopyOnWriteArrayListsSection 7 -  Simulations:dining philosophers problemlibrary problemSection 8 - Parallel Algorithms:what is parallel computingparallel merge sortparallel algorithmsSection 9 - Fork-Join FrameworkFork-Join frameworkmaximum finding in parallel mannerSection 10 - Stream APIthe Stream API explained with examplessequential streams and parallel streamsSection 11 - BigData and MapReduce:what is MapReduceMapReduce and Fork-Join frameworkThanks for joining my course, let's get started!

Overview

Section 1: Introduction

Lecture 1 Introduction

Section 2: ### MULTITHREADING ###

Lecture 2 Multithreading section

Section 3: Multithreading Theory

Lecture 3 Processes and threads introduction

Lecture 4 What is time-slicing algorithm?

Lecture 5 Benefits of multithreading

Lecture 6 Downside of multithreading

Lecture 7 Thread lifecycles

Section 4: Threads Manipulation

Lecture 8 Sequential processing

Lecture 9 Starting threads - Runnable

Lecture 10 Starting threads - Thread class

Lecture 11 Runnable interface and Thread class

Lecture 12 Wait for threads to finish - join

Lecture 13 Daemon threads and user threads

Lecture 14 Thread priority and Java Thread Scheduler

Section 5: Inter-Thread Communication

Lecture 15 Memory management of threads

Lecture 16 Synchronization

Lecture 17 Problems with synchronization

Lecture 18 Locking with custom objects

Lecture 19 What are re-entrant locks?

Lecture 20 Wait and notify

Lecture 21 What is the difference between wait and sleep?

Lecture 22 Producer and consumer

Lecture 23 Locks

Lecture 24 Producer consumer with locks

Lecture 25 Locks and synchronization

Section 6: Multithreading Concepts

Lecture 26 Volatile

Lecture 27 Stopping a thread

Lecture 28 Deadlock and livelock

Lecture 29 Deadlock example

Lecture 30 Livelock example

Lecture 31 Atomic variables

Lecture 32 What are semaphores?

Lecture 33 Mutexes and semaphores

Lecture 34 Semaphores example

Lecture 35 Mutex and binary semaphore

Section 7: Creating Threads with Executors

Lecture 36 Why to use thread pools?

Lecture 37 Executors example - SingleThreadExecutor

Lecture 38 Executors example - FixedThreadPools

Lecture 39 Executors example - ScheduledExecutor

Lecture 40 Stopping executors

Lecture 41 What is a Callable interface and Future object?

Lecture 42 Callable and future example

Section 8: Concurrent Collections

Lecture 43 What is the collections framework?

Lecture 44 Collections synchronization

Lecture 45 Latch

Lecture 46 Cyclic barrier

Lecture 47 Blocking queue

Lecture 48 Delay queue

Lecture 49 Priority queue

Lecture 50 Concurrent maps

Lecture 51 Exchanger

Lecture 52 CopyOnWriteArrays

Section 9: Multithreading Exercise I - Dining Philosophers Problem

Lecture 53 Dining philosophers problem I - the problem

Lecture 54 Dining philosophers problems II - constants

Lecture 55 Dining philosophers problems III - chopstick

Lecture 56 Dining philosophers problems IV - philosopher

Lecture 57 Dining philosophers problems V - starting the threads

Lecture 58 Dining philosophers problems VI - running the simulation

Section 10: Multithreading Exercise II -Students Library Problem

Lecture 59 Student library simulation I - the problem

Lecture 60 Student library simulation II - constants

Lecture 61 Student library simulation III - book

Lecture 62 Student library simulation IV - student

Lecture 63 Student library simulation V - lock() and tryLock()

Lecture 64 Student library simulation VI - running the simulation

Section 11: ### PARALLEL ALGORITHMS ###

Lecture 65 What is parallel computing?

Section 12: Parallelization

Lecture 66 Sequential merge sort introduction

Lecture 67 Sequential merge sort implementation

Lecture 68 Merge sort and stack memory visualization

Lecture 69 Parallel merge sort implementation

Lecture 70 Running time comparison of merge sort implementations

Lecture 71 Sum problem introduction

Lecture 72 Sum problem - sequential approach

Lecture 73 Sum problem - parallel implementation

Lecture 74 Running time comparison of sum operations

Section 13: Fork-Join Framework

Lecture 75 What is the Fork-join framework?

Lecture 76 Fork-join framework simple example - RecursiveAction

Lecture 77 Exercise - printing integers

Lecture 78 Solution - printing integers

Lecture 79 Fork-join framework simple example - RecursiveTask

Lecture 80 Exercise - Fibonacci-numbers

Lecture 81 Solution - Fibonacci-numbers

Lecture 82 Thread optimization

Lecture 83 Maximum finding - the algorithm

Lecture 84 Maximum finding - running the application

Lecture 85 Merge sort revisited I

Lecture 86 Merge sort revisited II

Section 14: Using Java's Stream API

Lecture 87 What is the Stream API?

Lecture 88 Streams with numbers

Lecture 89 Streams with strings

Lecture 90 Collections and streams

Lecture 91 Streams with custom objects - part 1

Lecture 92 Streams with custom objects - part 2

Lecture 93 Exercise - filtering

Lecture 94 Solution - filtering

Lecture 95 External and internal iteration

Lecture 96 Processing files with streams

Lecture 97 Short-circuiting and loop fusion

Lecture 98 map() and flatMap()

Lecture 99 Exercise - mapping

Lecture 100 Solution - mapping

Lecture 101 Optionals and other important concepts

Lecture 102 OptionalInt, OptionalFloat and OptionalDouble

Lecture 103 allMatch(), noneMatch(), findFirst() and findAny()

Lecture 104 Parallelization - example #1

Lecture 105 Parallelization - example #2

Lecture 106 Parallelization - example #3

Section 15: MapReduce and Parallelization

Lecture 107 MapReduce introduction - basics

Lecture 108 MapReduce introduction - example

Lecture 109 MapReduce and Fork-Join

Section 16: Course Materials (DOWNLOADS)

Lecture 110 Course materials

This course is meant for students who want to get a good grasp on multithreading in java or just want a quick refresher