<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=UTF-8" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 11.00.9600.17126"></HEAD>
<BODY bgColor=#ffffff text=#000000>
<DIV><SPAN class=906190820-27062014><FONT color=#0000ff size=2 
face=Arial>Priority can only really be used for the dispatching/queueing 
mechanism. Once tasks are executing priority is essentially meaningless. Thread 
priorities have no significance in general.</FONT></SPAN></DIV>
<DIV><SPAN class=906190820-27062014><FONT color=#0000ff size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=906190820-27062014><FONT color=#0000ff size=2 
face=Arial>David</FONT></SPAN></DIV>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid">
  <DIV class=OutlookMessageHeader dir=ltr align=left><FONT size=2 
  face=Tahoma>-----Original Message-----<BR><B>From:</B> 
  concurrency-interest-bounces@cs.oswego.edu 
  [mailto:concurrency-interest-bounces@cs.oswego.edu]<B>On Behalf Of 
  </B>DT<BR><B>Sent:</B> Saturday, 28 June 2014 1:42 AM<BR><B>To:</B> viktor 
  ?lang; dholmes@ieee.org<BR><B>Cc:</B> concurrency-interest<BR><B>Subject:</B> 
  Re: [concurrency-interest] Custom ThreadPoolExecutor implementation to handle 
  priority based Callable tasks<BR><BR></FONT></DIV>
  <P 
  class=MsoNormal>                
  We see several scenarios how to approach:<O:P></O:P></P>
  <P class=MsoListParagraphCxSpFirst>1-st approach is to use a 
  PriorityBlockingQueue, provide Comparator for Callable tasks to change the 
  order based on the Callable priority. Then when we call invokeAll( Collections 
  of Callable tasks) on TPE to execute tasks from queue based on the priority, 
  1-st, 2-d, n which means that tasks will be executed based on abstract groups 
  (for instance<SPAN style="mso-spacerun: yes">  </SPAN>1-st group – all 
  tasks with high priority go first according to TPE scheduling. 
  tpe.execute(thread) will be called and tasks will be assigned to available tpe 
  worker threads. <O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle>Following this logic tpe does not 
  guarantee for sure that all high priority tasks will be executed first. Or 
  this guarantee is not enough enforced (maybe there are some policy to enforce 
  this)<O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle><O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle>2-d approach is to modify invokeAll() to 
  handle priority explicitly which does not look like a clean solution. 
  <O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle><O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle>3-d approach is to have multiple TPEs and 
  each of these tpe will handle only one type of priority without mix, for 
  example tpe1 will invokeAll(tasks priority 1 only) , tpe2 will invokeAll(tasks 
  priority 2 only). Which tpe should be instantiated -1<SUP>st</SUP> should 
  follow business logic.<O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle><O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle><O:P></O:P></P>
  <P class=MsoListParagraphCxSpMiddle>Here is an example what we trying to 
  implement. Assuming we have different types of tasks which are bounded to get 
  some resources using udp/tcp/http/sql. Something like <O:P></O:P></P>
  <P class=MsoListParagraphCxSpLast>sqlWorker needs to execute SQLs and return 
  results, httpWorker type has to handle http calls and return some results, 
  etc. the issue is that even if we assign some priorities to these workers to 
  perform similar tasks following some business logic what data needs to get 
  first within our workflow we would have to change priorities dynamically just 
  because same type of workers might<SPAN style="mso-spacerun: yes">  
  </SPAN>finish execution within different timeslot. So we have to wait until 
  all workers are executed (practically tune timeslot based on the longest 
  execution time) or drop some tasks due to the timing limits. If we follow 3-d 
  approach it would be hard to manage TPEs. If we follow 2-d approach it would 
  be hard to maintain tasks and guarantee execution group by group.<SPAN 
  style="mso-spacerun: yes">  </SPAN>And 1-st approach seems does not 
  completely satisfy the problem concurrency execution logic.<O:P></O:P></P>
  <META name=ProgId content=Word.Document>
  <META name=Generator content="Microsoft Word 14">
  <META name=Originator content="Microsoft Word 14"><LINK rel=File-List 
  href="file:///C:%5CUsers%5CD%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><LINK rel=themeData 
  href="file:///C:%5CUsers%5CD%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"><LINK 
  rel=colorSchemeMapping 
  href="file:///C:%5CUsers%5CD%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="--"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
  <STYLE>@font-face {
        font-family: Calibri;
}
@page WordSection1 {size: 8.5in 11.0in; margin: 1.0in 1.0in 1.0in 1.0in; mso-header-margin: .5in; mso-footer-margin: .5in; mso-paper-source: 0; }
P.MsoNormal {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-style-parent: ""; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi
}
LI.MsoNormal {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-style-parent: ""; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi
}
DIV.MsoNormal {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-style-parent: ""; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi
}
P.MsoListParagraph {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto
}
LI.MsoListParagraph {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto
}
DIV.MsoListParagraph {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto
}
P.MsoListParagraphCxSpFirst {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
LI.MsoListParagraphCxSpFirst {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
DIV.MsoListParagraphCxSpFirst {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
P.MsoListParagraphCxSpMiddle {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
LI.MsoListParagraphCxSpMiddle {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
DIV.MsoListParagraphCxSpMiddle {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
P.MsoListParagraphCxSpLast {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
LI.MsoListParagraphCxSpLast {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
DIV.MsoListParagraphCxSpLast {
        FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: 115%; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-priority: 34; mso-add-space: auto; mso-style-type: export-only
}
.MsoChpDefault {
        FONT-FAMILY: "Calibri","sans-serif"; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-style-type: export-only; mso-default-props: yes
}
.MsoPapDefault {
        MARGIN-BOTTOM: 10pt; LINE-HEIGHT: 115%; mso-style-type: export-only
}
DIV.WordSection1 {
        page: WordSection1
}
</STYLE>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0in 5.4pt 0in 5.4pt;
        mso-para-margin-top:0in;
        mso-para-margin-right:0in;
        mso-para-margin-bottom:10.0pt;
        mso-para-margin-left:0in;
        line-height:115%;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-ascii-theme-font:minor-latin;
        mso-hansi-font-family:Calibri;
        mso-hansi-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
  <DIV class=moz-cite-prefix>On 6/27/2014 3:12 AM, √iktor Ҡlang wrote:<BR></DIV>
  <BLOCKQUOTE 
  cite=mid:CANPzfU_zfcQocw7NJvbktw6P5pW2Fcyjes33C=a8iFRe53U6eA@mail.gmail.com 
  type="cite">
    <DIV dir=ltr>"<SPAN 
    style="FONT-SIZE: 12px; FONT-FAMILY: arial,sans-serif">  public 
    abstract void setPriority(int priority);" ? Changing priority on an already 
    submitted task seems strange.<BR><BR>I agree with David, just use a 
    PriorityBlockingQueue [</SPAN><FONT face="arial, sans-serif"><A 
    href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/PriorityBlockingQueue.html" 
    moz-do-not-send="true">http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/PriorityBlockingQueue.html</A>] 
    for the submission queue of the TPE and provide a Comparator that checks for 
    your PriorityCallable and puts non-PriorityCallable-Callables at an 
    appropriate default priority.</FONT></DIV>
    <DIV class=gmail_extra><BR><BR>
    <DIV class=gmail_quote>On Fri, Jun 27, 2014 at 6:16 AM, David Holmes <SPAN 
    dir=ltr><<A href="mailto:davidcholmes@aapt.net.au" target=_blank 
    moz-do-not-send="true">davidcholmes@aapt.net.au</A>></SPAN> wrote:<BR>
    <BLOCKQUOTE class=gmail_quote 
    style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Can't 
      you just use your PriorityCallable with a custom PriorityQueue 
      and<BR>standard ThreadPoolExecutor?<BR><SPAN class=HOEnZb><FONT 
      color=#888888><BR>David<BR></FONT></SPAN>
      <DIV class=HOEnZb>
      <DIV class=h5><BR>> -----Original Message-----<BR>> From: <A 
      href="mailto:concurrency-interest-bounces@cs.oswego.edu" 
      moz-do-not-send="true">concurrency-interest-bounces@cs.oswego.edu</A><BR>> 
      [mailto:<A href="mailto:concurrency-interest-bounces@cs.oswego.edu" 
      moz-do-not-send="true">concurrency-interest-bounces@cs.oswego.edu</A>]On 
      Behalf Of DT<BR>> Sent: Friday, 27 June 2014 2:08 PM<BR>> To: <A 
      href="mailto:concurrency-interest@cs.oswego.edu" 
      moz-do-not-send="true">concurrency-interest@cs.oswego.edu</A><BR>> 
      Subject: [concurrency-interest] Custom ThreadPoolExecutor 
      implementation<BR>> to handle priority based Callable 
      tasks<BR>><BR>><BR>> If we were to control Callable Tasks with 
      Priorities and to manage<BR>> execution of those callable tasks through 
      ThreadPoolExecutor we would<BR>> have to implement custom 
      ThreadPoolExecutor and PriorityCallable (see a<BR>> suggestion below). 
      What other ways to accomplish this do you see ?<BR>><BR>> public 
      interface PriorityCallable extends Callable<Object> {<BR>>   
         public abstract void setPriority(int priority);<BR>> 
           ...<BR>> }<BR>><BR>> public class 
      CustomThreadPoolExecutor  extends ThreadPoolExecutor {<BR>> 
      ...<BR>> ...<BR>> public <T> List<Future<T>> 
      customInvokeAll(<BR>>               
         Collection<? extends Callable<T>> tasks, long 
      timeout,<BR>> TimeUnit unit) // pass PriorityCallable<BR>>   
                     throws 
      InterruptedException {<BR>>             
       if (tasks == null || unit == null)<BR>>       
                 throw new 
      NullPointerException();<BR>>             
       long nanos = unit.toNanos(timeout);<BR>>       
             List<Future<T>> futures = 
      new<BR>> ArrayList<Future<T>>(tasks.size());<BR>>   
                 boolean done = false;<BR>> 
                   try {<BR>>   
                     // handle Priority 
      based Callable tasks here, though<BR>> can expect timing issues<BR>> 
                       // custom 
      logic to group Callable tasks , if (priority<BR>> == 1, 2, 3 create 
      group of callables, etc )<BR>>           
             for (Callable<T> t : tasks)<BR>> 
                          
       futures.add(newTaskFor(t));<BR>><BR>>       
                 long lastTime = 
      System.nanoTime();<BR>><BR>>           
             // Interleave time checks and calls to execute 
      in case<BR>>                 
       // executor doesn't have any/much parallelism.<BR>>     
                  
       Iterator<Future<T>> it = futures.iterator();<BR>> 
                       while 
      (it.hasNext()) {<BR>>               
             execute((Runnable)(it.next())); // should we 
      expect<BR>> futures get executed within the same timeframe for 
      Callables with<BR>> different priorities<BR>>       
                     long now = 
      System.nanoTime();<BR>>             
               nanos -= now - lastTime;<BR>>   
                        
       lastTime = now;<BR>>             
               if (nanos <= 0)<BR>>     
                          
       return futures;<BR>>             
           }<BR>><BR>>           
             for (Future<T> f : futures) {<BR>> 
                          
       if (!f.isDone()) {<BR>>             
                   if (nanos <= 0)<BR>> 
                          
               return futures;<BR>>     
                          
       try {<BR>>               
                     f.get(nanos, 
      TimeUnit.NANOSECONDS);<BR>>             
                   } catch 
      (CancellationException ignore) {<BR>>         
                       } catch 
      (ExecutionException ignore) { // Should<BR>> we cancel tasks based on 
      the priority as well?<BR>>             
                   } catch (TimeoutException 
      toe) {<BR>>                 
                   return futures;<BR>> 
                          
           }<BR>>             
                   long now = 
      System.nanoTime();<BR>>             
                   nanos -= now - 
      lastTime;<BR>>                 
               lastTime = now;<BR>>     
                       }<BR>> 
                       }<BR>> 
                       done = 
      true;<BR>>                 
       return futures;<BR>>             
       } finally {<BR>>               
         if (!done)<BR>>             
               for (Future<T> f : 
      futures)<BR>>                 
               f.cancel(true);<BR>>     
               }<BR>>         
       }<BR>> ...<BR>> }<BR>><BR>> Thank you,<BR>> 
      dt<BR>> <A href="http://www.flyingtroika.com/" target=_blank 
      moz-do-not-send="true">http://www.flyingtroika.com/</A><BR>><BR>> 
      _______________________________________________<BR>> 
      Concurrency-interest mailing list<BR>> <A 
      href="mailto:Concurrency-interest@cs.oswego.edu" 
      moz-do-not-send="true">Concurrency-interest@cs.oswego.edu</A><BR>> <A 
      href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" 
      target=_blank 
      moz-do-not-send="true">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</A><BR><BR>_______________________________________________<BR>Concurrency-interest 
      mailing list<BR><A href="mailto:Concurrency-interest@cs.oswego.edu" 
      moz-do-not-send="true">Concurrency-interest@cs.oswego.edu</A><BR><A 
      href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" 
      target=_blank 
      moz-do-not-send="true">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</A><BR></DIV></DIV></BLOCKQUOTE></DIV><BR><BR 
    clear=all>
    <DIV><BR></DIV>-- <BR>
    <DIV dir=ltr>
    <DIV><SPAN 
    style="FONT-SIZE: medium; FONT-FAMILY: Times; FONT-VARIANT: normal; WHITE-SPACE: normal; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); LETTER-SPACING: normal; LINE-HEIGHT: normal; TEXT-INDENT: 0px">
    <DIV 
    style="FONT-SIZE: 13px; FONT-FAMILY: arial,sans-serif; COLOR: rgb(34,34,34)">Cheers,</DIV>
    <DIV 
    style="FONT-SIZE: 13px; FONT-FAMILY: arial,sans-serif; COLOR: rgb(34,34,34)">√</DIV></SPAN></DIV></DIV></DIV></BLOCKQUOTE><BR></BLOCKQUOTE></BODY></HTML>