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

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确实不好实现,我最后采用了判断线程名的方式进行运行并中断处理

    点赞 打赏 评论

相关推荐 更多相似问题