讲synchronized关键字时候,就不得不提一下多线程问题同步问题
多线程的同步问题:多个线程同时修改一个数据的时候,可能导致的问题 多线程的问题,又叫Concurrency 问题.
Java中提供了同步机制来解决处理资源冲突问题,使用synchronized关键字
同步快:
代码1
synchronized表示当前线程,独占 对象 someObject,如果有其他线程试图占有对象someObject,就会等待,直到当前线程释放对someObject的占用。someObject 又叫同步对象,所有的对象,都可以作为同步对象,为了达到同步的效果必须使用同一个同步对象
代码二
提一下这个someObject,首先它为任意一个对象,而且是各线程共同去占有的,然后当多个线程去启动并占有时,这就引入一个叫标志位的东西,每个对象存在一个标志位,并具有两个值0,1,当其中一个线程运行到代码一的同步快时先检查该对象的标志位,若为0状态,表明该对象有其他线程占有,它会继续等待,知道其被释放,这时该对象标志位为1,它会占有这个对象,执行同步快中的代码,并且会把someObject对象标志位设置为0,防止其他线程执行。
同步方法:
代码三