多线程 *** 作同一资源时将引发数据不安全问题
多线程共享数据可能带来的问题:数据不安全
原因:多线程共同 *** 作数据时引发的冲突(如 延时 *** 作未全部完成等等);
怎样实现线程安全?
第一种方法: (同步方法) 方法加锁
使用synchronized 修饰符的方法控制类成员变量的访问
访问修饰符 synchronized 返回类型 方法名 (参数列表){......}
或者:
synchronized 访问修饰符 返回类型 方法名 (参数){......}
synchronized 就是为当前线程声明一把锁
第二种方法:同步代码块
使用synchronized关键字修饰代码块
synchronized(Object){
//同步代码块
}
syncObject 为需同步的对象 通常为this效果与同步方法相同(代码加锁)
多个线程访问同一资源的同步代码块时:
1,同一时刻只能有一个线程进入synchronized(this)同步代码块
2,当一个线程访问synchronized(this)同步代码块同时被锁定
3,当一个线程访问一个synchronized(this)同步代码块时其他线程可以访问该资源的非synchronized(this)同步代码
多线程共享数据
同步方法:同步代码块(synchronized)
线程同步:各线程之间有个先来后到,不能一窝蜂的涌上来
线程同步:其实是排队:上锁一个一个来,不能同时 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)