黑马程序员技术交流社区

标题: 多线程安全问题 [打印本页]

作者: 王玉岩    时间: 2012-9-28 00:15
标题: 多线程安全问题
本帖最后由 王玉岩 于 2012-9-28 11:57 编辑

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

红色部分这句话应该怎么理解呢?怎么叫没执行完,那应该是什么样的一种状态呢?求解答
作者: 冯培军    时间: 2012-9-28 00:33
线程是操作系统调度运行的最小单元。一个程序(一个进程)可以有多个线程同时存在并运行。什么时候,哪个线程被分配到CPU来运行,是操作系统的事情。
如果机子上只有一个CPU,多个线程其实并不是真正同时运行的,只是操作系统调度分配给多个线程不同的CPU时间片,多个线程轮流得到CPU时间片,
给用户的感觉好像是多小线程同时在运行。
如果机子上有多个CPU,那2个线程很有可能真的是同时运行的。

线程被操作系统调度过程中,有2个基本的状态:
1. running  (运行)
2. suspended (挂起);线程被挂起的时候,CPU时间片就不会分配到这个线程;
    线程可以通过API明确地告诉操作系统,这个线程被挂起;操作系统也可能在背后挂起一个线程

作者: 钢伢仔    时间: 2012-9-28 00:40
顽强探索中!
作者: 叶征东    时间: 2012-9-28 01:41
本帖最后由 叶征东 于 2012-9-28 22:10 编辑







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2