1.多線程的三個特性:原子性、可見性、有序性
原子性:是指一個操作是不可中斷的。即使是多個線程一起執行的時候,一個操作一旦開始,就不會被其他線程干擾。
比如,對於一個靜態全局變量int i,兩個線程同時對它賦值,線程A給他賦值為1,線程B給他賦值為-1。那么不管這兩個線程
以何種方式。何種步調工作,i的值要么是1,要么是-1.線程A和線程B之間是沒有干擾的。這就是原子性的一個特點,不可被中斷。
可見性:是指當一個線程修改了某一個共享變量的值,其他線程是否能夠立即知道這個修改。顯然,對於串行來說,可見性問題是不存在的。
有序性:在並發時,程序的執行可能會出現亂序。給人的直觀感覺就是:寫在前面的代碼,會在后面執行。有序性問題的原因是因為程序在
執行時,可能會進行指令重排,重排后的指令與原指令的順序未必一致。