Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #3880
| From | Lew <noone@lewscanon.com> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Concurrent bidirectional one-to-many map? |
| Date | 2011-05-09 18:36 -0400 |
| Organization | albasani.net |
| Message-ID | <iq9q97$s81$1@news.albasani.net> (permalink) |
| References | (3 earlier) <nsadnUZcjoF01ljQnZ2dnUVZ_gednZ2d@earthlink.com> <alpine.DEB.2.00.1105080428540.28763@urchin.earth.li> <08586289-8935-4532-93d0-e8c7dd45cb24@c1g2000yqe.googlegroups.com> <alpine.DEB.2.00.1105091825310.18864@urchin.earth.li> <iq9kf7$fr1$1@news.albasani.net> |
Sebastian wrote:
> schrieb Tom Anderson:
>> Robert Klemme wrote:
>>> Tom Anderson wrote:
>>>>> Sebastian wrote:
>>>>> ...
>>>>>> To give an example, I'm trying to solve a problem like this:
>>>>>> Associate tasks with workspaces, where a workspace may hold many
>>>>>> tasks,but a task may be associate with at most one workspace.
>>>>> ...
>>> This could be solved by standard relationship implementations: Make
>>> workspace a member of Task and synchronize accesses on Task. Example:
>>>
>>> https://gist.github.com/962538
>>>
>>> By using monitors of Task and Workspace we have quite fine granularity
>>> of locking.
>> True! The fastest map is no map at all.
>>
>> If the OP can't modify Task or Workspace, perhaps he could consider
>> writing wrappers which refer to each other, a TaskWithWorkspace, and
>> WorkspaceWithTasks (perhaps with better names), and passing those around
>> rather than plain Tasks and Workspaces.
> I can't modify Task, or Workspace, and I won't do much "passing around"
> either, as I'm writing a component that will be called remotely (over
> RMI). But I suppose I could create a wrapper object for each
> Item/Workspace on the first call and look them up in maps indexed on
> the Item/Workspace id. Now I wonder if I just have shifted the problem
> to these maps?
>
> I'll have to brush up on "monitors" and look at the example.
>
> As for access patterns, that will depend on worker behavior. If they are
> well-behaved, they won't competemuch for tasks and finish them quickly, so I'd
> hope for about as many writes as reads.
"Monitor", very loosely speaking, is Javaese for "lock". More specifically,
every object in Java has a built-in lock that has the properties of a Hoare
monitor. I can't be bothered to look that up right now, but for us workaday
Java programmers it means that thing that 'synchronized' locks.
public class Lockaday
{
private static final State state = new State();
synchronized // class object's monitor
public static void setState( State newState )
{
state.copy( newState );
}
synchronized // class object's monitor
public static State getState()
{
return state.clone();
}
private final Object lock = new Object();
private Attribute attribute;
public void setAttribute( Attribute newAttr )
{
synchronized ( lock ) // monitor of instance that 'lock' references
{
attribute = newAttr;
}
}
public Attribute getAttribute()
{
synchronized ( lock ) // monitor of instance that 'lock' references
{
return attribute;
}
}
}
--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-06 22:07 +0200
Re: Concurrent bidirectional one-to-many map? markspace <-@.> - 2011-05-06 13:45 -0700
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-07 11:43 +0200
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-07 07:59 -0400
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-07 12:49 -0400
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-07 21:34 +0200
Re: Concurrent bidirectional one-to-many map? Patricia Shanahan <pats@acm.org> - 2011-05-07 06:40 -0700
Re: Concurrent bidirectional one-to-many map? Tom Anderson <twic@urchin.earth.li> - 2011-05-08 04:51 +0100
Re: Concurrent bidirectional one-to-many map? Robert Klemme <shortcutter@googlemail.com> - 2011-05-09 06:43 -0700
Re: Concurrent bidirectional one-to-many map? Tom Anderson <twic@urchin.earth.li> - 2011-05-09 18:28 +0100
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-09 22:57 +0200
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-09 18:36 -0400
Re: Concurrent bidirectional one-to-many map? Tom Anderson <twic@urchin.earth.li> - 2011-05-10 08:34 +0100
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-11 10:09 +0200
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-11 10:51 +0200
Re: Concurrent bidirectional one-to-many map? Robert Klemme <shortcutter@googlemail.com> - 2011-05-11 04:55 -0700
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-11 09:00 -0400
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-11 20:47 +0200
Re: Concurrent bidirectional one-to-many map? markspace <-@.> - 2011-05-07 09:35 -0700
Re: Concurrent bidirectional one-to-many map? Michal Kleczek <kleku75@gmail.com> - 2011-05-09 16:42 +0200
Re: Concurrent bidirectional one-to-many map? Roedy Green <see_website@mindprod.com.invalid> - 2011-05-07 03:46 -0700
csiph-web