river-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Firmstone <j...@zeus.net.au>
Subject Re: A new implementation of TaskManager
Date Thu, 24 Jun 2010 12:24:13 GMT
Patricia Shanahan wrote:
> Peter Firmstone <j...@zeus.net.au> wrote:
>> A new implementation of TaskManager could take advantage of:
>>
>> java.util.concurrent.PriorityBlockingQueue
>>
>> However there is risk inherent in using Comparator, this could introduce
>> new bugs and may not be appropriate:
>>
>>     "Caution should be exercised when using a comparator capable of
>>     imposing an ordering inconsistent with equals to order a sorted set
>>     (or sorted map). Suppose a sorted set (or sorted map) with an
>>     explicit comparator c is used with elements (or keys) drawn from a
>>     set S. If the ordering imposed by c on S is inconsistent with
>>     equals, the sorted set (or sorted map) will behave "strangely." In
>>     particular the sorted set (or sorted map) will violate the general
>>     contract for set (or map), which is defined in terms of equals."
>
> I don't think this issue is relevant to PriorityBlockingQueue, which
> explicitly permits elements with equal priority and only uses the
> Comparator to establish priority order.
>
> The problem is in classes such as TreeSet. According to the Set
> interface, a TreeSet should not contain two equal elements. A TreeSet
> created with a Comparator uses the Comparator for all its comparisons,
> so it will never contain two items for which the compare method would
> return 0. There could be two or more elements in the TreeSet that the
> Comparator considers unequal but the equals methods consider equal.
>
> ...

Good point, well reasoned.

>>
>> If we are to refactor the classes in com.sun.jini.thread, I think we'd
>> need to refactor everything that relies on them too and this will take
>> some work.
>>
>> If someone is willing to donate time, I'm certainly for such a 
>> refactoring.
>
> I'm an experienced Java programmer looking for a useful and interesting
> open source project, and River was one of the suggestions I've received.

You've definitely come to the right place, we have some interesting 
fundamental issues, ripe for picking.

> Other than having used Subversion, I have no knowledge of Apache build,
> test, and documentation conventions. I need a task where delays due to
> my Apache learning curve are not going to delay any other work.
>
> Do you think this refactoring would be a suitable task?
>
> Patricia
>

Yes certainly, don't be afraid to dive in, welcome to Apache River.

To run some of the tests you'll need to download and install jtreg.

http://openjdk.java.net/jtreg/

Once you've downloaded the source from svn, you can build it using:

$ ant all.build

To run the qa test suite:

$ ant qa.run

To run the jtreg regression test suite:

cd to the qa directory, then
$ ant jtreg

You'll need JDK 1.6 to build and run the qa test suite and JDK 1.5 for 
the jtreg tests.

Peter.

Mime
View raw message