Tag: runnable

如何在Java中删除/ postDelayed runnables?

在一个事件发生时,我想运行一个任务/可运行但是在2秒内延迟它的执行。 在这2秒钟内,如果发生相同的事件,我想删除上一个任务并重新发布它 – 再次延迟2秒。 示例场景是后台编译。 保存文件时,我等待2秒钟,然后开始编译类和其他类,具体取决于类。 我不想一直这样做 – 特别是如果有编辑器自动保存文件,比如IntelliJ IDEA。 那么, 我如何在Java中删除/ postDelayed runnables ,比如Android的Handler( 删除 / postDelayed )?

Java:从Runnable返回结果

假设以下简化示例。 设B表示处理某些栅格数据的类: import java.awt.image.BufferedImage; public class B implements Runnable{ private boolean c; private Runnable f; public B (boolean c_, Runnable f_) { c = c_; f = f_;} public BufferedImage process() { //Some operations BufferedImage output = null; if (c) output = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); return output; } public void run() { process();} } […]

我用线程迷失了我的思绪

我想要这个类的对象: public class Chromosome implements Runnable, Comparable { private String[] chromosome; public double fitness; private Random chromoGen; public Chromosome(double[] candidate) { super(); //encode candidate PER parameter; using Matrix as storage chromosome = encode(candidate); chromoGen = new Random(); } //De-fault public Chromosome() { super(); chromoGen = new Random(); //de-fault genotype chromosome = new String[6]; } /** […]

Runnable运行哪个线程?

我想每100毫秒更新一次UI。 在StackOverflow中搜索后,我发现了一个使用Runnable和Handler的解决方案 final Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { //update UI here handler.postDelayed(this, 100); } }; runnable.run(); 有用! 但我有一些问题: Runnable运行在哪个线程上? MainThread还是其他线程? 这是关于postDelay的文档 Handler附加了MainThread, Runnable在MainThread上运行吗? 如果Runnable在MainThread上运行,为什么需要Handler ? 根据我的知识, Handler用于在两个线程之间发送消息

创建Jar文件 – 在其他计算机上不起作用

我正在尝试将我的程序打包成一个JAR文件,以便它可以在多台计算机上使用。 我的程序由userinterface.java , userinterface.java和writer.java 。 用Eclipse编写的程序在我的计算机上运行完美。 导出时,它将在我的计算机上工作,但在其他计算机上导致以下错误: “Could not find the main class: start. Program will exit”. 再次,当我双击它时,我的程序在我的计算机上正常运行。 我试过通过命令提示符创建JAR文件,我的Manifest文件是正确的。 发生什么事?

使用Runnable作为回调/子程序的不良做法?

使用Runnable作为回调被认为是不好的做法吗? 考虑到Runnable意味着与线程一起使用(参见它的JavaDoc),我想知道这是否正常 – 或者我是否应该为此目的创建自己的接口。 我所说的是: public class KeyBinding { public KeyBinding(KeyStroke stroke, Runnable handler) { //… } }

与eclipse项目相比,Runnable jar运行速度太慢

我从eclipse项目中提取了一个jar文件,但运行得太慢了。 它需要将近20分钟才能完成,而eclipse项目只需要几秒钟。 我通过所有三种不同的选择导出了带有库处理的runnable jar。 我还导出了包含所有库处理选项的jar文件。 我还使用命令运行jar文件: java -Xmx2048m -Xms1024m -jar “finalJar.jar” 我删除了所有System.out.println,除了最后一个给我答案的。 如何导出几乎像原始项目一样快的jar? 或者以不同的方式运行它以加快速度? 因为时间的差异太大,我不明白为什么。

为什么我应该使用单独的线程在JAVA中显示GUI

这个简单的问题让我很困惑。 您可以通过将frames的setVisible属性设置为true来显示JAVA GUI应用程序。 但在我在互联网上发现的几乎所有例子中,他们都使用一个单独的线程来做同样的事情。 他们做这样的事情, SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new Frame().setvisible(true); //just take the idea of this line } }); 我发现这两种方法没有区别。 但必须有一些特殊的原因,这就是每个人都这样做的原因。 有人可以解释一下……谢谢!

Android – 纠正multithreading

有人可以帮我一下这张图片下载代码吗? 我希望它在后台运行,但似乎新的Thread(新的Runnable())肯定不是要走的路,根据Android 文档 ,我不知道如何处理这个问题: // caller while( exhibitorCursor.moveToNext() ) { new Thread(new Runnable() { public void run() { downloadImage(exhibitorId, exhibitorString, DOWNLOAD_EXHIBITOR); } }).start(); } // first function public void downloadImage(long id, String externalImageUrl, int type) { // logic junk here if( !(new File(localImageName).exists()) ) { DownloadFromUrl(externalImageUrl, localImageName); } } // second function public void DownloadFromUrl(String […]

从另一个线程调用@Transactional方法(Runnable)

有没有简单的解决方案在新线程中使用JPA将数据保存到数据库中? 我的基于Spring的Web应用程序允许用户管理计划任务。 在运行时,他可以创建和启动预定义任务的新实例。 我正在使用spring的TaskScheduler,一切运行良好。 但是我需要将每个被解雇的任务的布尔结果保存到数据库中。 我怎样才能做到这一点? 编辑:我必须概括我的问题:我需要从任务中调用@Service类的方法。 因为在保存到数据库之前必须“处理”任务结果。 编辑2:我的问题代码的简化版本来到这里。 从调度程序调用saveTaskResult()时,将打印出消息,但不会将任何内容保存到db中。 但每当我从控制器调用saveTaskResult()时,记录都会正确保存到数据库中。 @Service public class DemoService { @Autowired private TaskResultDao taskResultDao; @Autowired private TaskScheduler scheduler; public void scheduleNewTask() { scheduler.scheduleWithFixedDelay(new Runnable() { public void run() { // do some action here saveTaskResult(new TaskResult(“result”)); } }, 1000L); } @Transactional public void saveTaskResult(TaskResult result) { System.out.println(“saving task result”); […]