看了这问题我茫然了……
可以被多个线程同时操作的数据叫做共享数据,也可以叫它共享资源。它不一定就得是变量,你上次问的那个里面 x 就是局部变量,不能多个线程同时操作,不是共享资源。
假如多个线程对集合里的元素进行取出操作,每个线程在取之前先要判断集合里是不是有元素,有就取出,没有不进行取操作。这时集合里的元素就是共享资源。安全问题:当集合里只有一个元素时,来了一个线程,做判断以后发现有元素,准备取元素,但这时它停下来了,CPU去执行其他进程,下一个线程来做判断时发现有元素,也准备取,假如好几个线程都到这了,只有一个元素,这时就会出错。就像火车票售票的例子,会出现负数的票一样。
多线程里还有几个概念,并发、并行、死锁等。为什么每次运行代码的时候出现的结果都不唯一………… |