Asynchronous Programming Writing Asynchronous Code in Java SoftUni Team Technical Trainers Software University

Slides:



Advertisements
Similar presentations
JavaScript Basics Course Introduction SoftUni Team Technical Trainers Software University
Advertisements

Software Quality Assurance QA Engineering, Testing, Bug Tracking, Test Automation Software University Technical Trainers SoftUni Team.
 Dimitar Ivanov Introduction to programming with microcontrollers.
C# Advanced Topics Methods, Classes and Objects SoftUni Team Technical Trainers Software University
AngularJS Routing Routes, Route Parameters, Templates, Location, Navigation SoftUni Team Technical Trainers Software University
AngularJS Services Built-in and Custom Services SoftUni Team Technical Trainers Software University
Methods Writing and using methods, overloads, ref, out SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC SoftUni Team Technical Trainers Software University
AngularJS Directives Defining Custom Directives SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
Teamwork and Personal Skills Course Introduction Software University SoftUni Team Technical Trainers.
Design Patterns: Structural Design Patterns
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
JavaScript Design Patterns Private Fields, Module, Revealing Module, Revealing Prototype, … Software University Technical Trainers SoftUni.
NoSQL Databases NoSQL Concepts SoftUni Team Technical Trainers Software University
Conditional Statements Implementing Control-Flow Logic in C# SoftUni Team Technical Trainers Software University
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Loops Repeating Code Multiple Times SoftUni Team Technical Trainers Software University
Start Your Own Blog Angel Georgiev Part-time Trainer angeru.softuni-friends.org Software University The Culture of Knowledge Sharing.
Entity Framework Performance SoftUni Team Technical Trainers Software University
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
Multidimensional Arrays, Sets, Dictionaries Processing Matrices, Multidimensional Arrays, Dictionaries, Sets SoftUni Team Technical Trainers Software University.
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC Angel Georgiev Part-time Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
AMD and RequireJS Splitting JavaScript Code into Dependent Modules Software University Technical Trainers SoftUni Team.
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
Asynchronous Programming Writing Asynchronous Code in C# SoftUni Team Technical Trainers Software University
Web Fundamentals (HTML and CSS) Course Introduction SoftUni Team Technical Trainers Software University
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
Web Fundamentals (HTML and CSS) Course Introduction Svetlin Nakov Technical Trainer Software University
JavaScript Modules and Patterns Private Fields, Module, Revealing Module, Revealing Prototype, … Software University Technical Trainers.
Web Development Tools Tools for Front-End Developers Writing HTML and CSS Code SoftUni Team Technical Trainers Software University
Web Fundamentals (HTML and CSS)
Responsive Design Design that Adapts to Different Devices SoftUni Team Technical Trainers Software University
Tables, Rows, Columns, Cells, Header, Footer, Colspan, Rowspan
High-Quality Programming Code Code Correctness, Readability, Maintainability Svetlin Nakov Technical Trainer Software University
CSS Transitions and Animations Animated HTML Elements SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Design Patterns: Structural Design Patterns General and reusable solutions to common problems in software design Software University
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
Reflection Programming under the hood SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Mocking Unit Testing Methods with External Dependencies SoftUni Team Technical Trainers Software University
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
JavaScript Tools Tools for Writing / Editing / Debugging JavaScript Code Svetlin Nakov Technical Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding Svetlin Nakov Technical Trainer Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
Team Work and Personal Skills Course Introduction Angel Georgiev Part-time Trainer Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
Asynchronous Programming Writing Concurrent Code in C# SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Static Members Static Variables & Methods SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
Java OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
Introduction to MVC SoftUni Team Introduction to MVC
Mocking tools for easier unit testing
Asynchronous Programming
Entity Framework: Relations
Extending functionality using Collections
Presentation transcript:

Asynchronous Programming Writing Asynchronous Code in Java SoftUni Team Technical Trainers Software University

2 1.Multi-Tasking 2.Synchronous Programming 3.Asynchronous Programming 4.Threads in Java 5.Concurrent classes in Java 6.Benefits and Drawbacks Table of Contents

3 sli.do #9956 Questions

4  A computer can run many processes (applications) at once  But its CPU can only execute one instruction at a time  Parellelism is achieved by the operating system's scheduler  Grants each thread a small interval of time to run Multi-Tasking ms program.exechrome.exeskype.exesystem.exeprogram.exe...

Synchronous Programming

6  Synchronous code is executed step by step Synchronous Code int n = 10 printNumbersInRange() System.out.println()...

7  If one component is blocked, the entire program is blocked  UI may become unresponsive  No utilization of multi-core systems  CPU-demanding tasks delay execution of all other tasks  Accessing resources blocks entire program Synchronous Programming Drawbacks

Synchronous Code Live Demo

9  Asynchronous programming allows the execution of code in the background Asynchronous Code int n = System.out.println() for (0..n) join() Does not block the main thread

Threads

11  A thread is a fundamental unit of code execution  Commonly, programs use more than one thread  Each thread has a memory area associated with it known as a stack  Stores local variables  Stores the currently invoked methods in order of invocation Threads

12  Threads in Java can be created using the java.lang.Thread class  Constructor accepts an implementation of the functional interface java.lang.Runnable to execute on a separate thread Threads in Java Thread thread = new Thread(() -> { for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) { System.out.println(i); System.out.println(i); } }); thread.start();

13  start() – schedules the thread for execution  join() – waits for the thread to finish its work (blocks the calling thread)  interrupt() – notifies the thread to interrupt its execution  others… java.lang.Thread

Threads Live Demo

15  Each thread has its own stack  The start (bottom) of the stack is the method from which the thread began execution  Each method (frame) stores local variables Thread Stack... isPrime() printAllPrimes() main() main thread...isValidUrl downloadAsync background thread

Threads Exercises in Class

17  A race condition occurs when two or more threads access shared data and they try to change it at the same time Thread Race Conditions

18  A thread-safe resource can be safely accessed by multiple threads  synchronized keyword grants access to only one thread at a time and avoids race conditions  Blocks any other threads until the resource is released Thread Safety - synchronized synchronized (numbers) { // unsafe code over numbers here //... // unsafe code over numbers here //...}

19  Another way to achieve this is trough an implementation of the java.util.concurrent.Lock interface  the lock must be static, so that each thread doesn’t create its own lock  what are the benefits of locks over synchronized ? Thread Safety - locks lock.lock(); // unsafe code here // unsafe code here //... //...lock.unlock();

20  volatile objects are kept in a common memory for all threads  guarantees visibility and NOT atomicity  volatile is NOT a substitute for synchronization Thread Safety - volatile

Thread safety Live Demo

22  The java.util.concurrent package contains useful classes that can be used safely on multiple threads  Most notably concurrent collections such as:  ConcurrentLinkedQueue  ConcurrentLinkedDeque  ConcurrentHashMap Concurrent classes

23  Notable concurrent collections which aren’t in the package are:  StringBuffer - it is a thread safe StringBuilder  Hashtable - it is a thread safe HashMap Legacy concurrent classes

Concurrent classes Live Demo

25  If a component is blocked, other components still run  UI runs separately and always remains responsive  Utilization of multi-core systems  Each core executes one or more threads  CPU-demanding tasks run on "background" threads Asynchronous Programming – Benefits

26  Hard to know which code parts are running at a specific time  Harder than usual to debug  Have to protect resources  One thread uses a resource  Other threads must wait for the resource  Hard to synchronize resource access  Deadlocks can occur Asynchronous Programming – Drawbacks

27  Jakob Jenkov article on Java Concurrency with tutorials  Article on multithreading (computer architecture)  Article on multithreading (software) Helpful Resources

28  A thread is a unit of code execution  Each thread has its own call stack  Multithreading means a program can do several operations in parallel by using many threads  Used to offload CPU-demanding work so the main thread does not block  Can lead to synchronization issues and unexpected results  Java has many useful tools for asynchronous programming  synchronized keyword  java.util.concurrent Summary

? ? ? ? ? ? ? ? ? Asynchronous Programming

License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International  Attribution: this work may contain portions from  "C# Fundamentals – Part 2" course by Telerik Academy under CC-BY-NC-SA licenseCC-BY-NC-SA 30

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg