Tag: 取消

java.util.concurrent.Future中的方法cancel()是否会阻塞?

我正在尝试在我的项目中实现Future 接口。 但看起来文档对它来说有点模糊。 从官方文档我们可以推断出: 方法cancel()不会抛出InterruptedException或ExecutionException等exception。 此外,它没有超时的变体。 所以看起来,它不应该阻止。 文档说 此方法返回后,对isDone()的后续调用将始终返回true。 但 boolean isDone()如果此任务已完成,则返回true。 因此,如果我们在任务处理时运行cancel()并且无法取消,则此方法应该等到任务完成。 哪个与1相矛盾。 cancel()的返回值描述为 返回:如果无法取消任务,则返回false,通常是因为它已经正常完成; 否则是真的 因此,如果任务正在运行并且可能被取消但不是在这个确切的时刻,我们应该返回true(我们不能声明它不能被取消)或等待(但它与1相矛盾)。 但也有一个声明 如果此方法返回true,则对isCancelled()的后续调用将始终返回true。 但 boolean isCancelled()如果此任务在正常完成之前被取消,则返回true。 当我们在任务运行时运行cancel()并且不能说任务是否可以被取消时(因为在这种情况下cancel()应该返回true,但是isCancelled()应该返回false),这与3相矛盾。 看起来很久以前这个API已经被解除了,并且这些不一致不应该出现在文档中。 但那里有。 我不明白了吗?

如何使用停止按钮停止运行Java代码

我有一个按钮从调用Bean调用方法。 此方法允许从解析html代码中提取数据。 当该方法运行时,我有一个对话框,显示进度条和命令按钮Cancel 。 我需要当用户单击取消按钮时,提取按钮调用的方法停止。 这是我的HTML代码: 这是我的sessionScoped Bean中的searchEmails方法 public void searchEmails() throws Exception { idCustomer = (String) session.getAttribute(“idCustomer”); System.out.println(idCustomer + ” this is it”); Customer customer = customerBusinessLocal.findById(idCustomer); data = dataBusinessLocal.createData(new Date(), number, keyword, moteur, customer, State.REJECTED); mails = mailBusinessLocal.createEmails(keyword, number, moteur, data); System.out.println(“Method was invoked”); } 如何通过取消命令按钮停止searchEmails方法的运行?

检查Java Timer是否被取消

为什么java.util.Timer对象没有isCancelled方法? 如果Timer没有被取消,我想安排一个任务,如果它被取消,直接运行它(在同一个线程上)。 是唯一可以捕获可能在Timer已被取消时可能发生的IllegalStateException选项吗? (捕获IllegalStateException感觉不对)。

基于服务器的SwingWorker不会停止

我有一个布尔变量来控制服务器的执行(启动/停止): private boolean ecoute = true; 这是我的class级: sw=new SwingWorker (){ protected String doInBackground() throws Exception { try { server = new ServerSocket(Integer.parseInt(port.getText())); String str1=”waiting for connexion..”; String str2=”Connexion ok”; log.append(str1+”\n”); PrintWriter out=null; BufferedReader in=null; Socket socClient=null; while(ecoute){ socClient = server.accept(); log.append(str2+”\n”); in = new BufferedReader( new InputStreamReader(socClient.getInputStream()) ); out = new PrintWriter( new BufferedWriter( new […]

SwingWorker:什么时候被称为done方法?

SwingWorker:的done()方法的Javadoc SwingWorker: 在doInBackground方法完成后在Event Dispatch Thread上执行。 我已经找到了在取消工人的情况下不是这样的线索。 在每种情况下都会调用Done (正常终止或取消)但在cancelled它不会排入 EDT,因为正常终止时会发生这种情况。 在取消SwingWorker的情况下调用done时是否有更精确的分析? 澄清:这个问题不在于如何cancel SwingWorker 。 这里假设SwingWorker以正确的方式被取消。 而且当它们应该完成时,它不是关于线程仍在工作。