efficient way to poll database?
If you must poll, see this article by a former colleague of mine.


  Most places I’ve worked at have had some sort of requirement for
  picking up new or changed rows from a table in the database. It’s only
  recently that I’ve found, what I would consider to be, a clean way of
  doing this.


He is particularly interested in capturing a stream of changes, but your use case sounds like you want to do a form of cross-language IPC via the database. I personally do not like polling; it's inelegant. There are a few approaches for this:


AQ. I link to the 9i docs so you can see that this is a well-established feature of Oracle. This is my own favourite technique for this kind of application. One interesting thing about AQ is that you might not even need to tell your app to wake up and fetch the data; you could send the data in the payload!
DCN. This is very straightforward to use from OCI, but I have never tried it with Java so can't comment.
DBMS_ALERT, as Leigh mentions
DBMS_PIPE a similar mechanism
Direct calls from PL/SQL into C using EXTPROC. From C you can call any other language, including Java. From that link there is some sample code on Github for doing this; it's actually quite straightforward. 
If you want to get really exotic, you could do this with Oracle Coherence - I do this via C in my example, there is also a Java binding.