Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jython类中的Java计时器来调度其中一个类方法?_Java_Jython_Python Multithreading - Fatal编程技术网

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

如何使用jython类中的Java计时器来调度其中一个类方法?,java,jython,python-multithreading,Java,Jython,Python Multithreading,我有一个jython类,它作为线程运行。我希望它的run方法创建一个java计时器,然后调度类的一个函数: class IBTHXHandler(threading.Thread): def __init__(self): threading.Thread.__init__(self, name='IBTHX Handler Thread') self.start() def run(self): print 'ibthx th

我有一个jython类,它作为线程运行。我希望它的run方法创建一个java计时器,然后调度类的一个函数:

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类,但这给我带来了问题(我想是因为我是从另一个线程中调用它的??)


无论如何,感谢您查看此内容。

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

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()

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

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()

谢谢你,弗兰克。那很有魅力!我想让你高兴起来,但我没有足够的名声去做!很抱歉但再次感谢,谢谢你的帮助。我还有一个问题,就是我不知道在调度TimerTask时如何将变量传递到TimerTask中。当我重写run()方法以获取变量,并将它们传递到timer.schedule方法时,我得到一个jython错误,表示run方法期望0个变量,而得到4个。我还尝试向TimerTask扩展类添加init方法,但没有成功。。。使TimerTask类成为thread类的内部类会有帮助吗,因为它可以访问thread类的变量?你能帮我吗?谢谢你,弗兰克。那很有魅力!我想让你高兴起来,但我没有足够的名声去做!很抱歉但再次感谢,谢谢你的帮助。我还有一个问题,就是我不知道在调度TimerTask时如何将变量传递到TimerTask中。当我重写run()方法以获取变量,并将它们传递到timer.schedule方法时,我得到一个jython错误,表示run方法期望0个变量,而得到4个。我还尝试向TimerTask扩展类添加init方法,但没有成功。。。使TimerTask类成为thread类的内部类会有帮助吗,因为它可以访问thread类的变量?你能帮我吗?