关于Java的多线程的问题

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

3个回答

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问