java - 如何使用 jython 类中的 Java 计时器来调度其中一个类方法?

标签 java jython python-multithreading

我有一个 jython 类,它作为线程运行。我希望它的 run 方法创建一个 java Timer,然后安排我的类的函数之一:

class IBTHXHandler(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self, name='IBTHX Handler Thread')
        self.start()

    def run(self):
        print 'ibthx thread running'
        timer = Timer
        timer.schedule(self.getRealtimeData(), 0, 1000)

    def getRealtimeData(self):
        print 'Getting Realtime Data'

当我运行此代码时,出现此错误:

TypeError: schedule(): 1st arg can't be coerced to java.util.TimerTask

我也尝试过

timer.schedule(self.getRealtimeData, 0, 1000)

这给了我

TypeError: schedule(): self arg can't be coerced to java.util.Timer

有没有比使用 Java 计时器更好的方法来解决这个问题?

我考虑使用 python threading.Timer 类,但这给了我问题(我想是因为我是从另一个线程中调用它的??)

无论如何,感谢您看到这里。

最佳答案

代码有两个问题。第一个是你忘记了 Timer 后面的 () 来实例化它,第二个是要调度的第一个 arg 必须是计时器任务。下面的代码应该可以工作。希望这有帮助!

import threading
from java.util import Timer, TimerTask

class MyTimerTask(TimerTask):
    def run(self):
        print 'Getting Realtime Data'


class IBTHXHandler(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self, name='IBTHX Handler Thread')
        self.start()

    def run(self):
        print 'ibthx thread running'
        timer = Timer()
        timer.schedule(MyTimerTask(), 0, 1000)

IBTHXHandler()

关于java - 如何使用 jython 类中的 Java 计时器来调度其中一个类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885058/

相关文章:

java - FileNotFound 错误,但我的 txt 文件与 java 文件位于同一位置

java - 如何向 JTable 单元格添加下拉菜单

java - 如何通过PythonInterpreter访问Python类

java - 在jython中使用Gephi的GraphDistance插件: I have the correct types but the 'execute' method disagrees

python 记录器的线程行为异常

Python2 : multiprocessing. dummy.Pool 与 multiprocessing.pool.ThreadPool

java - 与 java 中的私有(private)/ protected 方法相关的性能与设计

java - Play Framework org.hibernate.PersistentObjectException : detached entity passed to persist: models

javascript - Maximo - 根据 METERDATA 的入站值在 MeterReading 中设置值

Python 线程随机返回错误结果