我有一个 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/