我有兩個線程;讓我們稱他們爲主線程和子線程。java線程之間的切換控制
的子線程運行的是儀表調用yield
回調我提供,每一個特定的條件被擊中時用戶提交的代碼。
的子線程具有啓動它,並提供了一種方法handOff
,這是從主線程稱爲包裝對象。 handOff
應暫停主線程的執行並取消暫停子線程的執行。當從子線程調用yield
回調時,子線程應該暫停,並且主線程應該取消暫停。
包裝對象也具有killChild
方法。在調用killChild
後調用下一次handOff
,子線程應該停止執行。
因此,控制流程看起來是這樣的:
Main: startChild-->handOff........-->handOff........-->killChild-->handOff-->
Child: -->yield..........-->yield...............
其中-->
代表任意代碼運行和...
表示暫停的線程。
它本質上是一個單線程程序,我只需要能夠迫使用戶提交的算法是折返。是的,這相當可怕。
什麼是一個很好的實現方法?
你可以使用'的Object.wait()'和'Object.notify()',但我不能告訴你到底怎麼了,不看你的源。另外如果你不打算併發,那麼爲什麼要使用線程開始?線程中有開銷(創建,上下文切換等)。 – MeetTitan
我需要能夠暫停用戶代碼 - 即用戶提交的類文件,我在運行時使用反射加載並調用 - 在執行過程中,然後稍後恢復。 Java沒有任何類似於內置的協程的東西,所以我用線程來攻擊它。我也在努力改變需求,以便用戶代碼必須是可重入的,但同時我正在處理這個問題。 –