我來自VB6,而我是Java新手。在VB6中,DoEvents
放棄了處理器並允許它處理其他線程。 Java中有類似的東西嗎?我如何使用它?在Java中,有沒有像VB6中的「DoEvents」
回答
放棄處理器並允許它處理其他線程。
Thread#yield()是java自動放棄處理器控制權的對應物。
根據JavaDoc爲java.lang.Thread#yield():
一個提示當前線程願意,得到其當前使用的處理器的調度器。調度程序可以自由地忽略這個提示。產量是一種啓發式嘗試,旨在改善線程之間的相對進程,否則這些線程會過度使用CPU。它的使用應該與詳細的性能分析和基準測試相結合,以確保它實際上具有預期的效果。
使用此方法很少適合。對於調試或測試目的可能有用,它可能有助於重現由於競態條件而產生的錯誤。在設計諸如java.util.concurrent.locks包中的併發控制結構時,它也可能很有用。
注意: 在基於Java的桌面UI框架的情況下,像Swing,RIM's UI application,有辦法修改使用invokeLater()
類型語義的UI。
從VB6轉移到Java本身,並在當時搜索了同一個問題的答案後,我可以告訴你,我必須改變我對如何做事情的思考方式。對「doEvents」的需求很可能是由於您嘗試以與編寫VB6相同的方式編寫Java程序或嘗試將「逐行」移植到Java的VB6項目。這兩個都不是好主意。仔細看看swing教程(如果是關於UI的)以及線程教程,無論它是否爲UI。密切關注並嘗試瞭解Event Dispatch線程如何工作。我發現Java教程是一個很好的起點,它們現在位於Oracle:http://docs.oracle.com/javase/tutorial/看樣本並閱讀代碼,它們是學習/實驗的好地方
您需要開始思考Java並且沒有將VB6轉換成Java,我花了一段時間纔到達那裏,但不是太長時間,並且如果你瞭解解決方法,克服「doEvents」的需要將使你走上很長的路。祝你好運,歡迎來到Stackoverflow,這是一個尋找幫助的好地方!
- 1. 有沒有像java中的module.export?
- 2. 有沒有像Java的CodeRush?
- 3. 有沒有在Java中
- 4. 在VB中有沒有任何等效關鍵字像「with」在VB6
- 5. 返回沒有在VB6
- 6. VB6 DoEvents不按預期工作
- 7. 在Java中像C++中有沒有ArrayList <String>集合?
- 8. 的MouseMotionListener沒有在Java中
- 9. 的KeyListener沒有在Java中
- 10. 在c#中有沒有像java的Character.digit(char ch,int radix)?
- 11. 在C#中有沒有像Python的getattr()?
- 12. 有沒有在Java中的Thread.Sleep
- 13. 有沒有辦法在VB6中完全擦除字符串?
- 14. 有沒有辦法在VB6/Visual Studio 6.0 IDE中顯示行號?
- 15. 像沒有Java的Apache Zookeeper?
- 16. 有沒有方法可以測試VB6中是否有Function/Sub?
- 17. 在Java中沒有輸出
- 18. 在java中沒有javafx.application.Application包
- 19. 請求沒有在java中
- 20. textarea.getText()沒有在Java中
- 21. 在Visual Studio宏中是否有等效的DoEvents?
- 22. 有沒有像java swing的fontello/bootstrap glyphicons?
- 23. 有沒有像Codecademy for Java的東西
- 24. 有沒有像SqlAlchemy的SqlSoup for Java?
- 25. VB6到Xls沒有Excel
- 26. VB6布爾 - 沒有字面
- 27. 有沒有更快的方法遍歷Java中BufferedImage的像素?
- 28. 有沒有像java中的Annotation Inheritance的東西?
- 29. 有沒有像.NET中的東西的Java描述符?
- 30. 在VB 6.0中使用DoEvents()
無論如何,系統「處理其他線程」。如果你在事件線程中忙於工作,那麼你只需要屈服,而這首先不應該這樣做。 – cHao
s/yield /'DoEvents'/ – cHao