I have updated the Java Concurrency tutorial introduction to be more up-to-date. In general I will be updating the tutorials in this trail over the coming months.
The Java ByteArrayOutputStream can collect the bytes written to and return them as a Java byte array. Thus, the Java ByteArrayOutputStream is handy when you have a component that can only write to an OutputStream, but you need the data as a byte array. This Java ByteArrayOutputStream tutorial has been updated with more descriptions and examples.
The Java ByteArrayInputStream can turn a Java byte array into an InputStream. Thus, the Java ByteArrayInputStream is very useful when you have a byte array, but need an InputStream for some purpose. This Java ByteArrayInputStream tutorial has been updated with more descriptions and examples.
The Java ThreadLocal provides a variable where values set can only be read by the same thread that set them. The Java ThreadLocal tutorial has now been updated with more information about setting initial value, removing the value etc.