Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. import java.util.concurrent.ArrayBlockingQueue;
  2. import java.util.concurrent.BlockingQueue;
  3.  
  4. /**
  5. * Unser eigener Thread zum asynchronen Ausführen von Runnables (in denen z.B. Datenbank Traffic stattfinden kann)
  6. */
  7.  
  8. public class RunnableQueueThread extends Thread {
  9.  
  10. private boolean keepProcessingQueue = true;
  11. private BlockingQueue<Runnable> queue;
  12.  
  13.  
  14. public RunnableQueueThread() {
  15. queue = new ArrayBlockingQueue<>( 30 );
  16. setName( "DB_QueueThread" ); // Name des Threads
  17. setDaemon( true ); // Daemon Threads halten die JVM nicht am Laufen, d.h. wenn es nur noch Daemon Threads gibt (und keine normalen mehr) wird sie beendet
  18. }
  19.  
  20. public boolean offerRunnable( Runnable r ) {
  21. if ( r != null ) {
  22. return queue.offer( r );
  23. } else
  24. return false;
  25. }
  26.  
  27. public void stopProcessing() {
  28. keepProcessingQueue = false;
  29. }
  30.  
  31. @Override
  32. public void run() { // Wird ausgeführt wenn der Thread gestartet wird
  33. while ( keepProcessingQueue ) { // Solange die Queue weiter abgearbeitet werden soll, wird ein neues Runnable Element aus der Queue geholt und ausgeführt
  34. Runnable r = null;
  35. try {
  36. r = queue.take();
  37. } catch ( InterruptedException e ) {
  38. Main.logThrowable( "Das Warten auf ein Runnable Element in der Queue wurde unterbrochen! Beginne erneut...", e );
  39. }
  40.  
  41. if ( r != null )
  42. try {
  43. r.run();
  44. } catch ( Exception e ) {
  45. Main.logThrowable( "Exception/Error während ein Runnable lief: ", e );
  46. }
  47. }
  48. }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement