Tasks to test your Java concurrency skills.

Write a program to calculate the fibonacci and factorals with large answers i.e. using BigInteger, to use multiple threads.

Write a similar program to perform matrix multiplication of a large matrix, e.g. 1024x1024 in a multi-threaded manner.

(Advanced) Write a thread safe, lockless ring buffer with one reader and one writer, multiple readers and one writer, multiple readers and multiple writers. Try to make this allocation free (ie. doesn't create any objects)

Benchmark your code to determine how much faster or slower this is compared with the single threaded version. Take care to ensure your results are reproduceable.

Examine how you can determine the optimial number of threads for your each task.

Try to adapt your code to use JDK7's fork/join.

If anyone has suggestions I would be happy to add them.


Popular posts from this blog

Java is Very Fast, If You Don’t Create Many Objects

System wide unique nanosecond timestamps

Comparing Approaches to Durability in Low Latency Messaging Queues