追心中的海,逐世界的梦
当多条语句在操作一个共享数据,一个数据对多条语句只执行了一部分, 还未执行完时,另一个参与进来,导致错误。
同步代码块:对于多条共享的语句,让一个线程先执行完。
synchronized(对象)//相当于“锁” { 需要被同步的代码//用到try,catch; } 复制代码
1、明确哪些代码是多线程运行代码;
2、明确共享数据;
3、明确多线程运行代码中哪些语句是操作共享数据的;
函数需要被对象调用,那么函数都有一个所属对象引用,即this,所以同步函数的锁就是this.