2013-12-13 34 views
0

我有一个c#代码,必须将其移植到java。 现在我遇到了我的话题中提到的这个指令。java中的“this.SynchronizingObject.Invoke()”的等价物

this.SynchronizingObject.Invoke((MethodInvoker)delegate() 
       { 
        // do my stuff 
       }, null); 

现在我必须问在这里,我能做些什么来实现这个在java中。 java中是否有任何同步对象?

+0

没有同步对象,但我们可以使用synchronized关键字将ant部分代码与任何Object同步。 –

+0

'this.SynchronizingObject'是什么类型,它的'Invoke'方法是做什么的?我假设它在特定的线程上调用提供的委托,我假设,但答案取决于具体情况。 – gustafc

+0

它只是一个实现自己的接口的类对象。被调用的方法基本上会执行http web请求并处理接收到的数据。 – icbytes

回答

0

做这样

SynchronizingObject synchronizingObject = new SynchronizingObject();  
synchronized (synchronizingObject) { 
    change your synchronizingObject here 

} 

synchronized void changeSynchronizingObject(SynchronizingObject synchronizingObject){ 
     change your synchronizingObject here 
} 
+0

如果我们将synchronizingObject实例变量设置为private,则会更好。 –

0

首先,你应该了解synchronized关键字synchronized块,如果你是从C#的背景。这只是你在操作系统课程中学习的一个互斥体。现在为了实现你可以使用下面的代码段。

类型1

AnyObject anyObject = new AnyObject(); 
synchronized(anyObject) { 
    // your critical section code here 
} 

类型2

synchronized <return_type> function() { 
    //critical section 
} 

这种方法需要在该方法中被作为锁实现类的实例。

这应该是一些帮助。

+0

Thx到目前为止。我已阅读关于synchronized关键字。但仅作为推荐的等效于c#的锁(this){}存根。 – icbytes