共享资源:
一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源。
比如多个线程访问容一个对象,同一个变量,同一个文件。
当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题
问题所在:把读写的问题给分开了,导致了数据的错乱。读写绑定在一起,形成一个原子。一旦一个线程在执行这个变量读写过程时,其他线程不允许操作。
//注释:
1.任意一个对象内部都有一把锁。加把锁可以解决读写问题。
2.@synchronized为互斥锁,线程同步,按顺序执行。一个线程如果在执行锁中的内容,另一个线程只能等待。
3.互斥锁默认是打开的。
4.注意这个锁所属的对象必须是全局变量才会有效。如果是局部变量,那么每次过来这个锁都是开着的,就起不到锁的效果。
5.代码锁的越少越好,这样性能会越高。