A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王玉岩 黑马帝   /  2012-9-28 00:15  /  1356 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王玉岩 于 2012-9-28 11:57 编辑

在毕老师讲解多线程安全问题的视频中就是关于打印出0,-1,-2票的时候所说的问题的原因:
        当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,
        另一个线程参与进来执行。
导致共享数据的错误。

红色部分这句话应该怎么理解呢?怎么叫没执行完,那应该是什么样的一种状态呢?求解答

3 个回复

倒序浏览
线程是操作系统调度运行的最小单元。一个程序(一个进程)可以有多个线程同时存在并运行。什么时候,哪个线程被分配到CPU来运行,是操作系统的事情。
如果机子上只有一个CPU,多个线程其实并不是真正同时运行的,只是操作系统调度分配给多个线程不同的CPU时间片,多个线程轮流得到CPU时间片,
给用户的感觉好像是多小线程同时在运行。
如果机子上有多个CPU,那2个线程很有可能真的是同时运行的。

线程被操作系统调度过程中,有2个基本的状态:
1. running  (运行)
2. suspended (挂起);线程被挂起的时候,CPU时间片就不会分配到这个线程;
    线程可以通过API明确地告诉操作系统,这个线程被挂起;操作系统也可能在背后挂起一个线程
回复 使用道具 举报
顽强探索中!
回复 使用道具 举报
本帖最后由 叶征东 于 2012-9-28 22:10 编辑


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马