论坛首页 入门技术论坛

利用对象的等待队列和锁队列管理线程。

浏览 4160 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-02-21   最后修改:2009-02-21

假设,每个对象都有一个锁队列。来说明可以被多少个线程公用。

while(true){
 { 
  if(线程要访问对象){
     进队等待; 
  }
  if(有锁,并且有等待的线程) 
    {
      锁出锁队列; Thread.start();
    进锁列;         
    Thread.end(); 
  } 
}

 

   发表时间:2009-02-21  
请给出完整示例,不要伪代码。
说说实话,我还不懂你想说明什么。
0 请登录后投票
   发表时间:2009-02-21  
线程池的实现原理?????
0 请登录后投票
   发表时间:2009-02-23  
你应该用线程去监听队列,队列状态驱动线程工作.研究下LF线程模型 你这个问题就解决了.不过要注意队列中的节点应该有生命周期的不要让相同任务在队列中重复出现.
1 请登录后投票
   发表时间:2009-03-07  
fjlyxx 写道
你应该用线程去监听队列,队列状态驱动线程工作.研究下LF线程模型 你这个问题就解决了.不过要注意队列中的节点应该有生命周期的不要让相同任务在队列中重复出现.

:

你说的真高深,不太明白,线程池啦,LF线程模型啦,都没有听说过。

我写那些东西的目的呢,只是为了出于一种好奇。
从感觉上说,
    java提供的一些多线程同步控制机制限制得太死板。
    例如,无法控制访问同一对象的线程的数量,等问题。
所以,一个很简单的问题,
    5个线程去抢一个资源,该如何协调?
因此,给了上面一个伪代码。
    我想计算机底层也应该是这样实现的吧。

此外,谢谢楼上的关注,收益颇深。
0 请登录后投票
   发表时间:2009-03-07  
gembler 写道
请给出完整示例,不要伪代码。
说说实话,我还不懂你想说明什么。

其实我也不懂,我想说明什么,只是一些胡乱猜想,其目的就是解决一个多线程问题:
如果有10人同时去抢一个教室,而这个教室只有5个座位,该如何协调?
知识浅陋,望赐教。
0 请登录后投票
   发表时间:2009-03-07  
daojin 写道
gembler 写道
请给出完整示例,不要伪代码。
说说实话,我还不懂你想说明什么。

其实我也不懂,我想说明什么,只是一些胡乱猜想,其目的就是解决一个多线程问题:
如果有10人同时去抢一个教室,而这个教室只有5个座位,该如何协调
知识浅陋,望赐教。

不知道你想怎么样协调
1 请登录后投票
   发表时间:2009-03-08  
gembler 写道
daojin 写道
gembler 写道
请给出完整示例,不要伪代码。
说说实话,我还不懂你想说明什么。

其实我也不懂,我想说明什么,只是一些胡乱猜想,其目的就是解决一个多线程问题:
如果有10人同时去抢一个教室,而这个教室只有5个座位,该如何协调
知识浅陋,望赐教。

不知道你想怎么样协调

让线程入个队列,而且这个队列是独占模式的。
只要把这个队列管理好,线程也就管理好了。
我是这么认为的,不知到对不对。
0 请登录后投票
   发表时间:2009-03-10  
daojin 写道
fjlyxx 写道
你应该用线程去监听队列,队列状态驱动线程工作.研究下LF线程模型 你这个问题就解决了.不过要注意队列中的节点应该有生命周期的不要让相同任务在队列中重复出现.

:

你说的真高深,不太明白,线程池啦,LF线程模型啦,都没有听说过。

我写那些东西的目的呢,只是为了出于一种好奇。
从感觉上说,
    java提供的一些多线程同步控制机制限制得太死板。
    例如,无法控制访问同一对象的线程的数量,等问题。
所以,一个很简单的问题,
    5个线程去抢一个资源,该如何协调?
因此,给了上面一个伪代码。
    我想计算机底层也应该是这样实现的吧。

此外,谢谢楼上的关注,收益颇深。

简单的说你不用锁队列,你把队列丢给一个线程,这个线程获取到队列节点后去找一个可以用的工作现场再把队列给它让它继续监听队列状态. 如果找不到可以用的工作现场就一直找.

原理就是这么简单,当前监听队列的线程是L线程   没有在监听队列的线程是F线程  因为只有一个线程能从队列中获取值所以不存在竞争的问题了.

1 请登录后投票
   发表时间:2009-03-13   最后修改:2009-03-13
fjlyxx 写道
daojin 写道
fjlyxx 写道
你应该用线程去监听队列,队列状态驱动线程工作.研究下LF线程模型 你这个问题就解决了.不过要注意队列中的节点应该有生命周期的不要让相同任务在队列中重复出现.

:

你说的真高深,不太明白,线程池啦,LF线程模型啦,都没有听说过。

我写那些东西的目的呢,只是为了出于一种好奇。
从感觉上说,
    java提供的一些多线程同步控制机制限制得太死板。
    例如,无法控制访问同一对象的线程的数量,等问题。
所以,一个很简单的问题,
    5个线程去抢一个资源,该如何协调?
因此,给了上面一个伪代码。
    我想计算机底层也应该是这样实现的吧。

此外,谢谢楼上的关注,收益颇深。

简单的说你不用锁队列,你把队列丢给一个线程,这个线程获取到队列节点后去找一个可以用的工作现场再把队列给它让它继续监听队列状态. 如果找不到可以用的工作现场就一直找.

原理就是这么简单,当前监听队列的线程是L线程   没有在监听队列的线程是F线程  因为只有一个线程能从队列中获取值所以不存在竞争的问题了.


怎么感觉像是批发市场?

批发市场就相当于任务队列?

小商家就相当于L,F 线程.

如果小商家在等货,就是L;

如果在卖货,就是F;

而货物最终的买家就是您说的 工作现场?

0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics