可以请你给我解释一下这段java代码?我无法理解这样的语法。
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
这意味着,这个代码块是synchronized
意义不超过一个线程可以访问该块中的代码。
此外this
意味着你可以在当前实例(获取当前实例锁)进行同步。
这是我在凯西Sierra的Java认证书找到。
由于不同步并发伤,你不希望同步任何代码比是必要的保护您的数据。所以,如果一个方法的范围超过需要,您可以同步部分的范围缩小到东西不到一个完整的方法,只是一个块。
请看下面的代码片段:
public synchronized void doStuff() {
System.out.println("synchronized");
}
这可以改变这一点:
public void doStuff() {
//do some stuff for which you do not require synchronization
synchronized(this) {
System.out.println("synchronized");
// perform stuff for which you require synchronization
}
}
在第二片段中,同步锁仅被应用于代码块,而不是整个方法。
synchronized (this)
是语法来实现块级同步。
这意味着,在qazxsw POI对象只和只有一个线程可以在同一时间执行所述封闭块。
在这里寻找更详细的解答:this
Block level synchronization
其所谓的synchronized块,它可以选择它的同步哪些对象。一个同步方法只可以使用“这”(或相应的类实例为同步类方法) 看看这些链接可能是它会给你更好的答案。
synchronized (this) {
}
同步(这) - 我们获得与对象相关联的锁指出,“本”。当我们使用这个块,我们的意思是,我们都愿意等到使用这种显示器的线,将其释放。这是有道理的使用锁,如果你改变了数据对象(该对象的变量)。
等待 - 使当前执行的线程等待,直到另一个线程调用notify方法或指定的时间。
此第一线控制到代码的封闭块的并行访问。一次只能有一个线程可以同时执行的代码块。阅读第synchronized block vs synchronized method?的2.2的更多信息
this tutorial
下面所附的代码块似乎使用暂停执行的线程的给定时间量的(非常差)方法。
synchronized (this) {
另外它是“吞噬”可能在观望,这是非常确实调皮的过程中抛出的异常。
在大多数情况下,只有一个线程可以在同一时间访问“同步(本)”。但是,这并不总是正确的!考虑下面的代码。在我的代码同步的静态对象作为锁,一切工作正常。当我改变的代码在(这)多个线程同时访问代码同步,它搅乱一切。上(这)仔细同步。注:该代码创建线程递归然后将它们显示顺序相反。
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
public class Project2
{
public static void main(String[] args) throws InterruptedException
{
Object lock = new Object();
Threads2 t1 = new Threads2(1);
t1.setName("Thread 1");
t1.start();
Threads2.que.add(t1);
t1.join();
}
}