请教一个多线程的问题

zapdos 2014-07-25 09:38:05
之前的帖子貌似说了太多无关的问题

我只想知道

怎么样做,可以先决定锁的顺序

然后,启动多个线程,在下面的流程中,按先前决定的顺序获得锁
...全文
129 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zapdos 2014-07-25
  • 打赏
  • 举报
回复
算了,结贴吧
grapepaul 2014-07-25
  • 打赏
  • 举报
回复
new ReentrantLock(true) 是公平的
qq_16609613 2014-07-25
  • 打赏
  • 举报
回复
路过 1楼好
zapdos 2014-07-25
  • 打赏
  • 举报
回复
引用 3 楼 rumlee 的回复:
这个问题好像确实不太好解决。 可以先创建线程,在启动(执行start)之前将线程加入一个List之类的容器中。然后再依次调用start启动,在获取锁之前,判断前一个线程是否已经执行了需要同步控制的部分。
现在我是按你这样写的,但是感觉不好,我是先确定顺序,然后让它们抢占,判断队列头是不是需要的锁,如果不是继续等待,但是这样造成了很多无谓的抢占 我记得谁说过ReentrantLock就是这样实现fairlock的,不知道对不对
zapdos 2014-07-25
  • 打赏
  • 举报
回复
引用 2 楼 ygycomon 的回复:
我在你上一个帖子答了。 zk可以解决你的问题,你的这个锁顺序问题和加锁是同一个问题。你去看zk的资料,搞不定的话来找我。
唉,我已说了不会写,不要用这么高深的回答 我只想解决这个问题不论是不是ZK都可以,就算是单机的方案都可以,分布式锁我自己可以想办法解决 就是说单机上怎么解决这个问题就可以
zapdos 2014-07-25
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
阶段一是单线程还是多线程?阶段一的分发策略是什么?
阶段一是单线程的 分发到各个线程是不确定的
rumlee 2014-07-25
  • 打赏
  • 举报
回复
这个问题好像确实不太好解决。 可以先创建线程,在启动(执行start)之前将线程加入一个List之类的容器中。然后再依次调用start启动,在获取锁之前,判断前一个线程是否已经执行了需要同步控制的部分。
致知Fighting 2014-07-25
  • 打赏
  • 举报
回复
我在你上一个帖子答了。 zk可以解决你的问题,你的这个锁顺序问题和加锁是同一个问题。你去看zk的资料,搞不定的话来找我。
  • 打赏
  • 举报
回复
阶段一是单线程还是多线程?阶段一的分发策略是什么?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧