There are "two models for readiness notification for a file descriptor.
- Level-triggered notification: A file descriptor is considered to be ready if it is possible to perform an I/O system call without blocking.
- Edge-triggered notification: Notification is provided if there is an I/O activity (e.g., new input) on a file descriptor since it was last monitored." 
(As a mnemonic, think of the 'E' in edge-triggered also standing for Event).
It's interesting to note that the two are isomorphic. If you were to have edge-triggered notifications and then kept a collection of them until used, you'd have level-triggered notification. Similarly, if you observed changes in the collection of level-triggered notifications, you'd have edge-triggered notifications. 
Anyway, in Java, "the Selector API requires a level-triggered polling mechanism. Edge-triggered interfaces require a much tighter coupling with the I/O methods." 
This edge-triggering can be seen in the standard read methods of Java I/O classes that tell you if data was received if the return value is greater than zero.
 The Linux Programming Interface, Michael Kerrisk