Using Semaphore and CyclicBarrier in Java applications

By dave

In this example I show an usage of two more concurrent classes and ; which are both provided in the core Java library. There's a wealth of concurrency classes built directly into the JVM that can really simplify multi-threaded development. CyclicBarrrier to make threads wait for alignment. In the example below, I use a cyclic barrier to make several threads...

BlockingQueue producer consumer example

By dave

In this BlockingQueue example we show how to write a very simple producer - consumer with a blocking queue. This example generates SimpleAddition objects that require an addition of two numbers to be performed on the consumer thread. In this case the two values to be added are generated using java.util.Random's nextInt call. They are stored on the queue as a...

Watching files in Java 7 with WatchService

By dave

In this article I show how to watch files and directories for additions/changes/deletions using the new file system support in Java 7. Finally, after years of native solutions, it is now possible to listen for file changes without resorting to OS specific solutions. In the code below, first we use the new file system support class to get a ...

NIO File operations in Java 7

By dave

Hot on the heals of the last article, interested in what other goodies may be in the new file IO package, and wanting to try the new catch block, I cooked up another example. In this example, I create a Path object for an example directory, into which I then create a file and write some text into the file. Some...

Using thread local in Java

By dave

This article assumes that you are already familiar with concurrent programming and design. Java 1.5 introduced the concurrent library , which provides an extensive set of classes for dealing with concurrency issues, these sit alongside some existing classes that have been around since earlier times. I've noticed that some of the classes I mention here don't get used as often as...

Reading a GZIP file using Java

By dave

Another common compression file format on Linux is the GZIP format. Java again has out of the box support for this file format. Gzip files differ from zip files in that they only contain one file, the compressed form of the original file with a .gz extension. Java's takes such a file type and decompresses it. We can treat ...

Formatting numbers using NumberFormat

By dave

is the class used to convert numeric values such as int, long and double into Strings. It has been around since the early days of Java, and generally performs well. Especially if you cache an instance of the class for repeated use. IMHO the only down side to using is that it can look a little verbose. To get...

Reading a zip file from java using ZipInputStream

By dave

Java provides support for reading zip files in the form of . This class provides an API where you can iterate over all the items in a given zip file, reading the data from the archive for each file. In order to do this, first you must create the instance giving the file that you wish to expand. Then you...

Concurrent Maps and CopyOnWriteArrayList

By dave

Copy on write lists provide a very quick win in terms of removing synchronization. I believe that a significant use case is providing a thread safe list for java's Listener (AKA observer) pattern. Copy on write lists make the assumption that the list does not update frequently, and is mainly used for reading. If this is not the case, the overhead...

Are we prone to over optimising code?

By dave

As a developer I often feel the need to performance tune code, or write "the best piece of code ever". Sometimes this happens even before I know which sections of the code will be executed frequently? These days I make every attempt to hold back from this approach. In applications where performance is critical I usually write it the most natural...

These may be of interest

We use cookies to analyse traffic and to personalise content. We also embed Twitter and Youtube on some pages, these companies have their own privacy policies.

See the privacy policy and terms of use of this site should you need more information or wish to adjust your settings.