如何在jython类中使用Java计时器来安排其中一个类方法?

时间:2012-12-14 19:25:24

标签: 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 Timer?

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

无论如何,感谢你看这个。

1 个答案:

答案 0 :(得分:1)

代码有两个问题。第一个是你在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()