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