[英]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.