出于对线程的保护,我们给每个线程配备了一把锁,synchronized就发挥着锁的作用。如果每个线程都有相应的锁,就不用担心多个线程出错的问题。只有当这个线程用完某一资源后,其他线程才能继续使用。下面我们就synchronized的概念、三种作用及方法分享给大家,最后带来使用的实例。
1.synchronized概念
能够保证同一时刻最多只有一个线程执行该段代码,以达到并发安全的效果。
2.synchronized的三个作用
(1)确保线程互斥的访问同步代码
(2)保证共享变量的修改能够及时可见
(3)有效解决重排序问题。
3.synchronized三种用法
(1)修饰普通方法
(2)修饰静态方法
(3)修饰代码块
4.synchronized实例public class SynTest01 implements Runnable{
static int a=0;
public static void main(String[] args)
throws InterruptedException {
SynTest01 syn= new SynTest01();
Thread thread1 = new Thread(syn);
Thread thread2 = new Thread(syn);
thread1.start();thread1.join();
thread2.start();thread2.join();
System.out.println(a);
}
@Override
public void run() {
for(int i=0;i<1000;i++) {
a++;
}
}
}
以上就是java中关于synchronized的介绍,相信大家已经对这种锁的有了初步的认知。接下来就synchronized的使用以及一些内容上的分析,会不断带来更多的讲解。