what is this piece of code doing
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 | public int synchronizedBlockGet() { synchronized( this ) { return i; } } |
我在阅读一些文章时遇到了这个代码。什么是同步的?类、方法或接口?请解释一下。
同步或一般的同步是在处理线程时出现的。例如,假设您的程序中有两个线程。这两个线程都使用同一个对象。(考虑一个场景,其中一个线程正在写入ArrayList,另一个线程正在从中读取)。在这种情况下,我们必须确保另一个线程在向列表中写入线程时不执行读或写操作。这是因为,写入列表至少包含3个步骤
为了确保这些线程不会被截获并且不会导致不一致,我们使用了线程同步的概念。
实现同步的方法有几种,包括同步方法和同步块。您提供的代码是一个同步块。
1 2 3 4 5 | public int synchronizedBlockGet() { synchronized( this ) { return i; } } |
这里发生的是,一旦一个线程在synchronizedblockget方法中,它将锁定上述方法所在的整个对象(称为获取对象的锁)。
它是一个关键字,一次只允许单个线程进入该块。
它将通过获取此对象上的锁来实现这一点。