<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
<blockquote
 cite="mid:CANPzfU8pNznwtcHMxooamqStXkSJCcRJh9sFQ6ORm-g-JM-bMg@mail.gmail.com"
 type="cite">
  <div class="gmail_quote">On Wed, May 16, 2012 at 10:16 AM, Dr Heinz
M. Kabutz <span dir="ltr"><<a moz-do-not-send="true"
 href="mailto:heinz@javaspecialists.eu" target="_blank">heinz@javaspecialists.eu</a>></span>
wrote:<br>
 
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000"><br>
2. I've got a nice solution utilizing the SerialExecutor approach,
however, as Joe mentioned, shutdown is particularly challenging.  I'm
still trying to solve that, but it is not easy.<br>
    </div>
  </blockquote>
  <div><br>
  </div>
  <div>Executor has no shutdown ;-)</div>
  </div>
</blockquote>
Yeah :-)  But then it is also not all that useful, as you will possibly
have objects stuck in the queues waiting to be scheduled.  How does one
then shut down the whole construct?  Answer: You don't ;-)<br>
<blockquote
 cite="mid:CANPzfU8pNznwtcHMxooamqStXkSJCcRJh9sFQ6ORm-g-JM-bMg@mail.gmail.com"
 type="cite">
  <div class="gmail_quote">
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000"><br>
3. Another challenge, also mentioned already in this thread, is that we
need to carefully manage the map so that we do not get a memory leak. 
The solution I'm trying now is to delete the SerialExecutor from the
map whenever it is empty.  This might create a lot of objects, but at
least we don't have to worry about a memory leak.</div>
  </blockquote>
  <div><br>
  </div>
  <div>If you have the SerialExecutor extend CLQ and use a @volatile
int/boolean to keep track of "is scheduled" or not then it's
essentially only 2 allocations to create the SerialExecutor:</div>
  <div><br>
  </div>
  <div>1 for the head-node in the CLQ and one for the SerialExecutor
itself, so it shouldn't be that bad.</div>
  <div><br>
  </div>
  <div>However, the performance will of course vary depending on how
it's used.</div>
  </div>
</blockquote>
Actually, I'm not really too worried about performance.  Glenn McGregor
was trying to solve a specific problem - that is to have his tasks
execute in order according to a particular stripe.  Thus the
requirement is not to be particularly lock-free or low contention.  In
my current solution I've got a big fat ReentrantLock that governs
everything.  This way I can manage the shared mutable state correctly.<br>
<br>
Make it run, make it right, make it fast.<br>
</body>
</html>