[concurrency-interest] JNI signaling back to a thread/concurrent structure?

Andrew Lentvorski bsder at allcaps.org
Tue Jul 14 04:43:24 EDT 2015

This is probably a really stupid question, but is there a way to signal
a java.util.concurrent structure from native code that would allow a JNI
function to effectively "wake" a sleeping/blocked Java thread?

The context is this.  I have a JNI audio callback trucking along in
OpenSL on Android.  That callback is running in some sort of system
thread with highly elevated priority.  A Java thread fills a buffer
which the audio callback empties.  When the circular buffer is full, the
Java thread which fills that buffer goes to sleep for a bit until the
buffer empties out some.

However, if something is going wrong and the circular audio buffer is
about to empty, I would like to do something that would wake up the Java
thread or at least queue it on a relatively soon timeslice.  Maybe it
can recover and maybe it can't, but without the ability to signal that,
the thread is going to stay asleep and the audio buffer will drain.

Now, I can just wake the thread up every so many milliseconds, but
that's kind of wasteful of power, CPU, etc. as the majority of the time
the thread is just going to wake up to see that the buffer is fine,
realize it has no work and go back to sleep.

Any suggestions?  Or am I just completely barking mad for wanting this?


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20150714/fe9ffd90/attachment.bin>

More information about the Concurrency-interest mailing list