线程的同步问题------synchronized关键字的运用
Posted tghz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的同步问题------synchronized关键字的运用相关的知识,希望对你有一定的参考价值。
当多线程程序出现以下情况就需要使用同步来解决:
1.有共享数据。
2.多条语句操作共享数据。
实现同步的方法:
方式一:同步代码块:
同步代码块的格式:
synchronized(锁对象){
需要被同步的代码
}
同步代码块要注意的细节:
1.锁对象可以是任意的对象。
2.锁对象必须是多线程共享的资源,否则无效。
3.同步会影响效率,所以没有线程安全问题就不要使用同步锁
4.调用sleep方法不会释放锁对象,但是调用wait方法的线程会释放锁对象。
方式二:同步方法:
同步方法的格式:
修饰符 synchronized 返回值类型 方法名(参数){
}
同步方法要注意的细节:
1.同步方法的锁对象是固定的,不能由你来指定。
2.非静态同步方法的锁对象是this对象,也就是谁调用的这个方法谁就是这个锁对象。静态方法的锁对象就是这个类名.class这个字节码对象。
以上是关于线程的同步问题------synchronized关键字的运用的主要内容,如果未能解决你的问题,请参考以下文章