[
https://jira.jboss.org/jira/browse/JGRP-1051?page=com.atlassian.jira.plug...
]
Bela Ban commented on JGRP-1051:
--------------------------------
Yes, this is something I wanted to do as an optimization:
- Var sleep-time which is the time ofthe first element (next to be executed)
- When a new task is schedule, do a sleep_time=min(sleep_time, next_task.delay)
- If the new sleep_time is lower than the current, interrupt and reschedule the runner
TimeScheduler: replace use of ScheduledThreadPoolExecutor with
ConcurrentSkipListMap
------------------------------------------------------------------------------------
Key: JGRP-1051
URL:
https://jira.jboss.org/jira/browse/JGRP-1051
Project: JGroups
Issue Type: Feature Request
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.9
Attachments: TimeScheduler.java
TimeScheduler currently extends ScheduledThreadPoolExecutor, which uses a DelayQueue for
keeping an ordered list of tasks (ordered by their execution times).
DelayQueue doesn't provide good speed, e.g. (IIRC) remove() requires a linear list
scan.
ConcurrentSkipListMap however provides O(log(n)) cost for get(), put(), remove() and
containsKey(). Attached is a cursory impl of TimeScheduler based on ConcurrentSkipListMap.
It is faster than the old version.
Since ConcurrentSkipListMap requires JDK 1.6, we cannot use this in 2.6.x. It can be used
in 3.0 only, or perhaps - after a discussion on the mailing list - in 2.9...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira