[英]jython multithreading
我在多線程方面遇到的最好的書是“Java Concurrency in Practice”。 它非常專注於 Java 線程並發性,當您開始了解並發性引入的問題和可能性時,它既令人謙卑又令人興奮。 不過,我幾年前購買的副本在編碼方面有一些勘誤,這加劇了一個已經具有挑戰性的主題:在此處查看勘誤: http : //jcip.net/errata.html 。
雖然是為希望探索並發性的 Java 開發人員(順便說一下,包括曾經使用過任何類型的 GUI 界面的任何人)而設計的,但我確信本書中概述的技術困難和微妙之處適用於任何並發性實現。
順便說一句,我也喜歡 Jython,並且可以確認任何可以在 Java 中執行的並發方面的操作顯然都可以在 Jython 中執行。 但是,有一個警告:並發可以用於異步編程(包括 GUI)和/或性能。 如果對於后者,您有問題,在我看來:根據我的經驗,Jython 的運行速度比等效的 Java 程序慢 10 倍。
這意味着您要求更高的 Jython 模塊將不得不調用 Jython 以外的其他東西來處理數字運算任務。 同時,Jython 到目前為止* 還沒有 Python 的多處理模塊,因此進程間通信已經過時,除非您冒險進入 RMI 的可怕領域。 如果你選擇那個選項,你比我更像一個男人/女人。 但一切都好:請參閱http://www.jython.org 上的“Jython 權威指南”……第 19 章是對並發的簡要介紹,第 10 章是關於集成 Java 和 Jython(提示:這太容易了)。
PS 最后一句話:大多數對這些事情了解的比我說的要多得多的專家說,摩爾定律的重要性正在被阿姆達爾定律所取代,簡而言之,這意味着編寫穩定和可擴展的真正並發程序的艱巨挑戰在未來。 使用聰明的代碼分析工具可以實現真正的(即線程)並發到底是多么容易我不能說,但是在這個主題上的投資以及並發強加的引人入勝的、智力新的推理學科可能會得到回報......如果你喜歡挑戰。
我用一個例子試過了。
要求:from rough import print_time from datetime import datetime """ This is actually using python threading package. One thing I came to know is that if we use the python threading module also, internally Jython chnages it to Java thread and work. """ # from threading import Thread, InterruptedException """ This is the java threading module. """ from java.lang import Thread, InterruptedException """ Here you can call your module from the run method. For passing arguments, you can use the constructor of the Cycle class. """ class Cycle(Thread): def __init__(self,time1=1): Thread.__init__(self) # arguments for the run method self.time1 = time1 def run(self): try: # Calling the required module with given arguments print_time(self.time1) except InterruptedException: print("Exception") if __name__ == '__main__': print("start time:",datetime.now()) for i in range(100): Cycle(i).start() print("end time:",datetime.now())
請在https://github.com/om12nayak/Jython_multithreading_demo 中找到完整代碼
最初令人困惑的方面可能是您可以混合搭配Java 和 Jython 的並發機制。 但這一切似乎都奏效了。 原因是:
...沒有優先級,沒有線程組,線程不能被破壞、停止、暫停、恢復或中斷。 [1]
Python 習慣用法可能更方便一些,因為,例如,如果您希望執行與synchronized (some_object) { ... }
等效的操作,則需要進行一些修改,這可能比使用RLock 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.