多线程问题

zyczy1314 2013-11-26 10:43:04
我main方法里有两个方法,第一个是每隔1h(定时)运行线程A,第二个是每5分钟(定时)检查数据库是否有新任务,如果有,马上启动线程A(new),一段时间后有可能两个线程同时启动运行,我怎么让第二个线程先运行完,以防止读写冲突
...全文
423 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyczy1314 2013-12-08
  • 打赏
  • 举报
回复
引用 9 楼 steenMan 的回复:
这其实就是一个线程之间通信的问题,可以设置一个读取标示。为两个线程通信用,在执行任务之前先读这个标示就可以了。当然这个标示要支持锁。
差不多这意思
shayebuhui0 2013-11-28
  • 打赏
  • 举报
回复
访问共享数据的时候加同步,就没问题了。
wuer0520 2013-11-28
  • 打赏
  • 举报
回复
楼主说的是线程同步么?有点没听懂
ivan_070 2013-11-28
  • 打赏
  • 举报
回复
楼主不妨把问题的高度再拔高一些,你的业务逻辑是什么。
lliiqiang 2013-11-28
  • 打赏
  • 举报
回复
设置一个状态标志.
steenMan 2013-11-27
  • 打赏
  • 举报
回复
这其实就是一个线程之间通信的问题,可以设置一个读取标示。为两个线程通信用,在执行任务之前先读这个标示就可以了。当然这个标示要支持锁。
骑士的崛起 2013-11-26
  • 打赏
  • 举报
回复
引用 4 楼 zyczy1314 的回复:
不知道你想达到什么目的。如果想同一时间不管有多少个定时器只会启动一个任务A,那你就把所有定时器用同一个异步的判断逻辑。如果想同一时间可以执行N个任务A,但是不希望同步执行造成共享数据IO冲突,就把共享操作加上锁。
genganpeng 2013-11-26
  • 打赏
  • 举报
回复
引用 4 楼 zyczy1314 的回复:
[quote=引用 1 楼 zxcvbnm11920 的回复:] 没看懂问题,看得懂的人解释下。
第一个定时器是1h启动一次,第二个定时器是5min启动一次,第二个定时器是用来检查数据库是否有新任务,如果有新任务就就马上调用线程A执行一次,而不是说等第一个定时器来执行,也就是说第一个定时器的线程刚执行完,但有可能还要50分钟才能再次执行,这时我就用第二个定时器来调用线程A,同时有可能在第二个线程执行时第一个线程也会按时启动,两个线程应该会冲突吧[/quote] 冲突的地方可以用synchrnise同步起来不可以吗?这样就不会冲突了吧
zyczy1314 2013-11-26
  • 打赏
  • 举报
回复
引用 3 楼 duanwu2330323 的回复:
楼主的问题确实没说明白,既然A线程已经在运行了,为什么还要用B线程去启动A线程呢,还有一段时间后,会有两个线程同时启动,这句话怎么说?貌似不会出现这种情况吧。另外线程的停止可以用stop()方法!希望楼主提问的时候能说明白点!
这个主要是处理新任务,因为是定时任务,一段时间后很有可能在同一时间内,两个线程都是在运行着的
zyczy1314 2013-11-26
  • 打赏
  • 举报
回复
引用 2 楼 huxiweng 的回复:
都是new A,而且A是同一线程,谁启动有区别吗?
没区别,但这个主要是用来处理新加的任务,时间上是有区别的,用来即时处理的,但有可能第二个线程刚启动,第一个线程也定时随后启动了,线程A有对数据库的读写,这两个线程会有冲突吧,所以我想让第二个先执行完,不知有木有其他方法
zyczy1314 2013-11-26
  • 打赏
  • 举报
回复
引用 1 楼 zxcvbnm11920 的回复:
没看懂问题,看得懂的人解释下。
第一个定时器是1h启动一次,第二个定时器是5min启动一次,第二个定时器是用来检查数据库是否有新任务,如果有新任务就就马上调用线程A执行一次,而不是说等第一个定时器来执行,也就是说第一个定时器的线程刚执行完,但有可能还要50分钟才能再次执行,这时我就用第二个定时器来调用线程A,同时有可能在第二个线程执行时第一个线程也会按时启动,两个线程应该会冲突吧
少羽 2013-11-26
  • 打赏
  • 举报
回复
楼主的问题确实没说明白,既然A线程已经在运行了,为什么还要用B线程去启动A线程呢,还有一段时间后,会有两个线程同时启动,这句话怎么说?貌似不会出现这种情况吧。另外线程的停止可以用stop()方法!希望楼主提问的时候能说明白点!
骑士的崛起 2013-11-26
  • 打赏
  • 举报
回复
没看懂问题,看得懂的人解释下。
teemai 2013-11-26
  • 打赏
  • 举报
回复
都是new A,而且A是同一线程,谁启动有区别吗?

62,620

社区成员

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

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