Well simple answer is - it's simply an interface that has no behavior.

According to Java language specification interfaces have pure behavior and classes have state and behavior, i.e; Interfaces are used in Java to specify the behavior of derived classes, but marker interfaces have no behavior.
Now the questions is what is the use of such an interface and who uses it.

Well, marker Interfaces are giving specification to the JVM about the implementing classes. They are also known as tag interfaces because they tag all the derived classes into a category based on their purpose.
Examples of marker interfaces are : Cloneable, Serializable, Remote, EventListener

Next question is how tagging is done underthehood. To understand this let's look at java's instanceof operator, which works in the following fashion:
If (object teacher instanceof class Person) will be true if object teacher can be upcast to type Class Person. That is if you want to give the option of a special behavior to the users of your class then ensure they implement marker interface and check with instanceof operator to so if user class has implemented the interface.

myThread = servlet instanceof MyThread;

if (myThread) {
if (dsPool == null)
dsPool = new Stack();
}
Del.icio.us Digg! My StumbleUpon Page