求知若渴虚心若愚
2017-03-17 09:26
采纳率: 100%
浏览 814
已采纳

关于Java的多线程的问题

CPU在一个时间点上只会运行一个线程,为什么还会出现两条线程占用同资源?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 白萝卜blb 2017-03-17 09:46
    已采纳

    你这样的理解是对的,出现这种问题也是肯定的,同一个时间点只会运行一个线程,CPU会把时间片分给不同的线程来让不同的线程交替使用CPU,那么怎么交替呢?就需要栈来保存当前的状态,切换到另外一个线程后,再把第二个线程栈内的资源取出来执行,就这样交替执行,那么问题就来了,如果第二个线程使用时恰巧是第一个线程保存状态的资源,这样就会容易造成死锁,也就是你理解的两条县城占用相同资源,这时候就可以通过锁结构,事务来保证资源能够分开让两个线程使用。

    已采纳该答案
    打赏 评论
  • oyljerry 2017-03-17 09:43

    但是一个线程不可能一直占用CPU,在线程运行期间,它会多次的占有,释放CPU,然后就是现代CPU有多核,这样可能两个线程同时运行在不同的CPU核上,从而同时占用资源

    打赏 评论
  • shen_wei 2017-03-17 09:56
    打赏 评论

相关推荐 更多相似问题