2011-03-16 55 views
2

我正在尋找一種允許確定性地執行Java線程以進行測試的工具或api。因此,允許在特定位置以字節代碼的java代碼上下文切換。例如,我想要一個線程t1在字節碼/源代碼中的第N行搶佔另一個線程t2,依此類推。爲了簡單起見,我們忽略同步或鎖定。是否有任何工具,如果可能的話,可以使用開源定製的JVM。我知道一些像dejavu,LEAP這樣的工具,但我想知道一些有此類工具經驗的人推薦的開源工具。Java線程的確定性執行,工具支持

乾杯, Pulkit

+2

有趣。我通常只是設置了一堆斷點,然後隨意啓動和停止線程。但它很乏味,容易出錯,絕對不能自動化。 –

+0

檢查[多線程程序是否可以確定?](http://stackoverflow.com/questions/3830347/can-a-multi-threaded-program-ever-be-deterministic) –

回答

1

我不知道你想要什麼那些任何工具,並普遍認爲將是艱難的,僅僅是因爲即時編譯器等。將模糊什麼是「行」的意思。所以你要麼會得到滿足你的目標的糟糕的代碼,要麼就是不符合實際的代碼。無論哪種方式錯誤可能會滑過。我建議你看看ConTest,以獲得關於如何在這個普通領域進行測試的良好觀點。

+0

謝謝Trent,Adam。按行我的意思是,一個字節碼指令。比方說,我希望線程T1暫停其在所謂的字節碼指令X處的執行,並讓另一個線程T2從暫停的地方恢復執行,或者如果它應該開始,則開始執行。我記得有關ConTest的文章,但我不認爲它的開源。 – pto

+0

JIT肯定會改變「字節碼指令X」的含義。是的,ConTest不是開源的,但我沒有看到任何比你想要的東西更接近的東西,抱歉... –