LiveLessons: Java Concurrency (2nd Edition)

Douglas C. Schmidt (d.schmidt@vanderbilt.edu)
Associate Chair of Electrical Engineering and Computer Science,
Professor of Computer Science, and Senior Researcher
in the Institute for Software Integrated Systems (ISIS)
at Vanderbilt University

Table of Contents

oCourse Summary
oCourse Topics
oCourse Objectives
oRecommended Background
oJava Source Code
oFacebook Group
oAdditional Resources
oAbout the Instructor
o

Course Summary

There's growing demand for software developers who understand how to write concurrent programs for a range of computing platforms, including mobile devices, laptops, desktops, servers, and cloud computing environments. This demand is driven by advances in infrastructure technologies, such as high performance multi-core and distributed core processors, inexpensive mass storage, ubiquitious network connectivity, and commodity hardware and software platforms. Leveraging these advances effectively requires application developers with a robust knowledge of concurrency in order to (1) increase performance by overlapping communication and computation to run in parallel, (2) improve responsiveness by processing user interface operations in a different execution context than other background processing operations, and (3) simplify programming structure by avoiding complex and tangled purely event-driven software architectures.

To help you program quality concurrent programs in Java, the 2nd edition of my LiveLessons course on LiveLessons course on Java Concurrency provides over 9.5 hours of videos that focus on the pattern-oriented techniques, tools, and methods covered in the following five lessons:

Course Topics

The Table of Contents for the 2nd edition of this course is available
here. The following is a summary of the key topics covered in this course (the 2 hours of new material in the 2nd edition is colored in red below):

Course Objectives

Upon completing this course, students will be able to:

Recommended Background

This course is intended for software developers who are familiar with More coverage of these background topics is available in my numerous
digital learning offerings.

Java Source Code

The Java source code for all the examples is available here. These examples been tested in Eclipse, Intellij, and/or Android Studio and should be straightforward to port it to other Java environments, as well. Suggestions for improvement are welcome (especially if they are accompanied with updates to the source code).

Facebook Group

There's a Facebook group on Java Concurrency. Feel free to post questions and comments on that group.

Additional Resources

The following are other online sources of material on concurrent programming in Java: Professor Adam Porter has also created a LiveLessons series of videos on Developing Android User Interfaces that may be of interest.

About the Instructor

Dr. Douglas C. Schmidt is a Full Professor in the Electrical Engineering and Computer Science Department, the Associate Chair of Computer Science and Engineering, and a Senior Researcher at the Institute for Software Integrated Systems, all at Vanderbilt University. He is also a Visiting Scientist at the Software Engineering Institute (SEI) at Carnegie Mellon University.

Dr. Schmidt is an internationally renowned and widely cited (h-index of 80) researcher whose work focuses on patterns, optimization techniques, and empirical analyses of object-oriented and component-based frameworks and model-driven engineering tools that facilitate the development of distributed real-time and embedded (DRE) middleware frameworks and mobile cloud computing applications on parallel platforms running over wireless/wired networks and embedded system interconnects. He has published over 10 books and 600 papers (including 100+ journal papers) in top IEEE, ACM, IFIP, and USENIX technical journals, conferences, and books that cover a range of topics, including high-performance communication software systems, parallel processing for high-speed networking protocols, and distributed real-time and embedded (DRE) middleware with CORBA, Real-time Java, object-oriented patterns for concurrent and distributed systems, concurrent and networked software for mobile devices, and model-driven engineering tools. He has mentored and graduated over 40 Ph.D. and Masters students working on these research topics and has presented over 500 keynote addresses, invited talks, and tutorials on mobile cloud computing with Android, reusable patterns, concurrent object-oriented network programming, distributed system middleware at scores of technical conferences.

Dr. Schmidt has co-authored several books in the Pattern-Oriented Software Architecture series for Wiley & Sons edited by Frank Buschmann of Siemens, including Patterns for Concurrent and Networked Objects, A Pattern Language for Distributed Computing, and Patterns and Pattern Languages. He has also co-authored two books for Addison-Wesley on the topic of C++ Network Programming edited by Bjarne Stroustrup of AT&T Labs. He was a member of the writing team for the books Ultra-Large-Scale Systems: Software Challenge of the Future and Critical Code: Software Producibility for Defense. In addition, he has co-editored the first volume of the Pattern Languages of Program Design series by Addison-Wesley and the Object-Oriented Application Frameworks: Applications & Experiences series for Wiley & Sons.

In addition to his research, Dr. Schmidt has a taught scores of cutting-edge courses at Vanderbilt University, University of California Irvine, and Washington University St. Louis on topics relating to object-oriented design and programming, software patterns, middleware for distributed real-time and embedded systems, concurrent and networked programming with C++ and Java, and mobile cloud computing with Android. He recently co-taught one of the first ground-breaking cross-college University Courses at Vanderbilt on Tackling Big Problems with Mobile Cloud Computing. He received the 2015 Award for Excellence in Teaching by the Vanderbilt University School of Engineering. In addition, he's taught 10+ popular Coursera MOOCs at Vanderbilt on topics related to pattern-oriented software architecture and Android App Development to over 200,000 learners from around the world.

Dr. Schmidt has served as guest editor for feature topic issues on Applications of Augmented Reality for the IEEE Proceedings, Model-Driven Engineering for IEEE Computer magazine, middleware technologies for future communication networks for IEEE Networks magazine, Distributed Object Computing for the IEEE Communications Magazine, Distributed Object Computing for the USENIX Computing Systems Journal, and the Communications of the ACM special issues on Design Patterns and Object-Oriented Frameworks. Dr. Schmidt has also served as the editor of the C++ Report magazine and the Patterns++ section of C++ Report. Along with Steve Vinoski (Chief Architect of IONA Technologies' Orbix Object Request Broker), Dr. Schmidt co-authored the Object Interconnections column on distributed computing middleware for the C/C++ Users Journal.

From 2010 to 2014 Dr. Schmidt was a member of the Air Force Scientific Advisory Board (AF SAB), where he served as Vice Chair of a study on Cyber Situational Awareness for Air Force mission operations, as well as a study on sustaining hardware and software for US aircraft. He also served on the advisory board for the joint Navy/Army Future Airborne Capability Environment (FACE) initiative. From 2000 to 2003 Dr. Schmidt served as a Program Manager in the DARPA Information eXplotation Office (IXO) and Information Technology Office (ITO), where he led the national effort on QoS-enabled component middleware research in the Program Composition for Embedded Systems (PCES) program. In addition, he served as the co-chair for the Software Design and Productivity (SDP) Coordinating Group of the Federal government's multi-agency Information Technology Research and Development (IT R&D) Program, the collaborative IT research effort of the major Federal science and technology agencies. The SDP Coordinating Group formulates the multi-agency research agenda in fundamental software design. Dr. Schmidt also served as the Deputy Director of the DARPA Information Technology Office (ITO), where he helped to set the national IT research and development agenda and manage the autonomous systems, network-centric command and control systems, distributed real-time and embedded systems, and augmented cognition.

Dr. Schmidt was formerly an Associate Professor in the Electrical and Computer Engineering department at the University of California, Irvine and an Associate Professor and Director of the Center for Distributed Object Computing in the Department of Computer Science and in the Department of Radiology at Washington University in St. Louis, Missouri, USA. In addition, he's been an adjunct professor of Software Engineering in the Institute for Software Research at the School of Computer Science at Carnegie Mellon University. He has also served as the Deputy Director of Research and Chief Technology Officer at the Software Engineering Institute, the Chief Technology Officer for PrismTech and the Chief Technology Officer at Zircon Computing, where he was responsible for technical vision, strategic directions, and growth.

Dr. Schmidt served as the General Chair of the Software Product Line Conference in 2015, the Program Chair of the Interoperable Open Architecture 2012 and 2013 conferences; program co-chair for the 1st International Symposium on Secure Virtual Infrastructures; the general co-chair for the DEBS 2009 conference; general chair for the IEEE/ACM 2007 MODELS conference; program co-chair for the 2006 ACM GPCE conference; program chair for the ACM OOPSLA 2004 conference; vice chair for the middleware track at the 2004 IEEE Real-time Systems Symposium; general co-chair for the 2004 IEEE Real-time Technology and Application Symposium; program co-chair for 2003 IEEE Real-time Technology and Application Symposium; the program co-chair for the 2003 IFIP/ACM/USENIX Middleware International Conference on Distributed Systems Platforms; area vice-chair and session chair for Middleware at the 2003 IEEE International Conference on Distributed Computing Systems (ICDCS); Program co-chair for the 2002 International Symposium on Distributed Objects and Applications; Program Co-chair for the 2001 International Symposium on Distributed Objects and Applications; Area vice-chair and session chair for Middleware at the 2001 IEEE International Conference on Distributed Computing Systems (ICDCS); co-chair of the 2000 OMG Workshop on Real-time and Embedded CORBA; general chair of the 2000 IFIP/ACM International Middleware Conference; program chair for the 1996 USENIX Conference on Object-Oriented Technologies and Systems (COOTS); and the 1996 Pattern Languages of Programming conference.

In addition to his academic research/teaching and university/government service, Dr. Schmidt has three decades of experience developing DRE middleware, model-driven engineering tools, and mobile cloud computing apps. He has led the development of the ADAPTIVE Communication Environment (ACE), which is a set of widely used, freely-available object-oriented frameworks that contain a rich set of components that implement patterns for mission-critical DRE systems. Dr. Schmidt and the members of his research group in the Distributed Object Computing (DOC) Group at Institute for Software Intensive Systems at Vanderbilt University have used ACE to develop a high performance, real-time CORBA ORB endsystem called The ACE ORB (TAO), which is a real-time ORB endsystem that supports end-to-end quality-of-service guarantees over high-speed networks. In turn, ACE and TAO form the basis for the Component-Integrated ACE ORB (CIAO), which is a real-time CORBA Component Model (CCM) implementation built by the DOC Group. The DOC Group also developed CoSMIC, which is a collection of domain-specific modeling languages and their associated analysis/synthesis tools that support various phases of DRE system development, analysis, configuration, and deployment.

The middleware platforms pioneered by Dr. Schmidt constitute some of the most successful examples of software R&D ever transitioned from academia to industry, being used successfully by thousands of developers in hundreds of companies world-wide, including Defense, Aerospace, Finance, Telecommunications, Medical, Gaming, and Internet industries. In collaboration with his colleagues, Dr. Schmidt has applied these middleware platforms and model-driven tools on large-scale telecommunications systems, medical imaging systems, real-time avionic systems, and distributed interactive simulation systems projects at many companies, including BBN, Boeing, Cisco, Ericsson, Kodak, Lockheed Martin, Lucent, Motorola, Nokia, Nortel, Raytheon, Qualcomm, SAIC, Siemens, Sprint, and Telcordia.

Dr. Schmidt received B.A. and M.A. degrees in Sociology from the College of William and Mary in Williamsburg, Virginia, and an M.S. and a Ph.D. in Computer Science from the University of California, Irvine (UCI) in 1984, 1986, 1990, and 1994, respectively.

In his spare time, Dr. Schmidt enjoys Corvettes and weight lifting.


Back to Douglas C. Schmidt's LiveLessons page.

Last modified 09:33:51 CDT 23 June 2017