逝_doom 2017-02-02 03:13 采纳率: 50%
浏览 1871
已采纳

JAVA使用robot类进行编写线程,如何正确的终止(其中会使用到ROBOT.DEALY())

在进行学习时,发现自己用robot类写鼠标点击事件的循环,然后以线程的方式进行运行,但是如果想要正确的终止,一般应该使用interrupt,但是如果在main函数中对这个线程进行interrupt,会抛出无法捕获的interruptexception(因为里面并没有使用sleep方法),while循环进行判断时可能是robot报错之后会将interrupt标志位重置,导致死循环,求解决或说明
代码如下

public class Click_Thread implements Runnable {
public void run()
{
try {
Robot robot = new Robot();

        while(!Thread.currentThread().isInterrupted())
        {
            movemouse(robot, 1421,456);
            pressmouseleft(robot);
            robot.delay(1000);
            movemouse(robot, 1000, 494);
            pressmouseleft(robot);
            robot.delay(1000);
            movemouse(robot, 1166, 635);
            pressmouseleft(robot);
            robot.delay(1000);

        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        System.out.println("捕获异常");
        e.printStackTrace();
    }
    System.out.println("????");

}
private static void movemouse(Robot robot,int x,int y)
{
    robot.mouseMove(x,y);
    robot.delay(500);
}
private static void pressmouseleft(Robot robot)
{
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(10);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.delay(500);
}

这个是那个线程类,然后用一个主函数启动
  • 写回答

1条回答 默认 最新

  • 逝_doom 2017-02-02 04:02
    关注

    算了,自己结贴,用interrupt确实不好实现,我最后采用了判断线程名的方式进行运行并中断处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog