Java之synchronized

英文释义
/ˈsɪŋkrənaɪzd/
adj. 同步的;同步化的
v. 使协调(synchronize 的过去分词);同时发生;校准

作为Java关键字,是一种同步锁,可以修饰代码块、方法、静态方法、类。
作用于代码块和方法时,作用对象是其调用对象。
作用于静态方法和类时,作用对象时这个类的所有对象。

1、修饰代码块:一个线程在访问一个对象中的synchronized(this)同步代码块时,其他试图访问该对象的线程将被阻塞。

public class SyncTaskNew implements Runnable {

    private static int count = 0;

    @Override
    public void run() {
        synchronized (this) {
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName() + ":" + count++);
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) {
        SyncTaskNew syncTask = new SyncTaskNew();
        Thread thread1 = new Thread(syncTask, "thread-1");
        Thread thread2 = new Thread(syncTask, "thread-2");
        thread1.start();
        thread2.start();
    }
}

thread-1:0
thread-1:1
thread-1:2
thread-1:3
thread-1:4
thread-2:5
thread-2:6
thread-2:7
thread-2:8
thread-2:9
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:概述 java发生线程安全的有原因有两个因素:第一,存在共享资源(也称临界资源,不知道为什么取这破名字);第二...
    涂豪_OP阅读 779评论 0 1
  • 同步锁可以是 锁对象 锁实例(this) 注:如果不是同一个实例,比如new了两个Test2分别执行run,则锁失...
    jnxc1888阅读 354评论 0 0
  • Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 ...
    程序o07阅读 370评论 0 0
  • 在Java 5以前,是用synchronized关键字来实现锁的功能。 synchronized关键字可以作为方法...
    fireshort阅读 1,275评论 0 2
  • synchronized 当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码...
    ShereenAo阅读 717评论 0 0