Abstract: This talk will give a broad and general presentation of concurrency in Java. Based on books like "Java concurrency in practice", by Brian Goetz et al., "Concurrent Programming in Java" by Doug Lea, "Effective Java" by Joshua Bloch, the Java API, Oracle's online tutorials, and various other sources on the web, it will try to provide motivation for multi-threaded programming, and go through the basic constructs of the Java language in support of multi-thread programming; keywords, java.lang classes and their concurrency related methods. An example of the producer-consumer pattern will illustrate these constructs and thread related concepts. The talk will address best practices, potential pitfalls, and concurrency related design patterns. Then it will introduce some of the interfaces and classes in java.util.concurrent package, which were introduced in Java 1.5 and 1.7, and describe how and when to use them. These classes provide a higher level and preferred approach to multi-threaded programming compared to the low level mechanisms provided by the classes Thread and Object. Finally, the presentation will address Java 8 and show how streams and lazy evaluation can, in some cases, replace the benefits and use of multiple threads.
Speaker Bio: Erik Colban has a PhD in mathematical logic from the University in Oslo and has been working for most of his career in the telecom industry. He has actively participated in the standardization of the protocols used by wireless communication systems such as GSM, CDMA, WiMAX, and LTE. He is the inventor of 20+ patents. Erik has experience in using several programming languages in his research and prior work: Fortran, Simula, Cobol, Scheme/Racket, Matlab/Octave, Python, Scala, and, most of all Java. He has a passion for programming and always trying to extend his experience and knowledge. He also has been teaching programming to young (middle and high school) students for the past 8 years.