提高线程速度[关闭]

2024-02-27

每次调用线程后,其速度都会增加(特别是 - FirstCircleRepaintThread、SecoundCircleRepaintThread、LineRepaintThread)。但主线程速度正常。我读了this https://stackoverflow.com/questions/17116344/losing-accuracy-as-thread-speed-increases问题,但我的线程的速度是always增加。GitHub https://github.com/rberla/rest5min, Dropbox 上的 JAR https://www.dropbox.com/s/26iwcnbftqgh3y5/Rest5MinsV0.32_SOF.jar附:对不起,我的英语不好


问题是,每次你unblock您正在创建线程的新实例,但您没有停止旧线程,因此它们仍在运行,更新您的 UI

public void block() {
    setVisible(true);

    // Create a bunch of new threads...        
    firstCircleThr = new FirstCircleRepaintThread();
    firstCircleThr.setPriority(Thread.MAX_PRIORITY);
    firstCircleThr.start();
    secoundCircleThr = new SecoundCircleRepaintThread();
    secoundCircleThr.setPriority(Thread.MAX_PRIORITY);
    secoundCircleThr.start();
    lineThr = new LineRepaintThread();
    lineThr.setPriority(Thread.MAX_PRIORITY);
    lineThr.start();
}

public void unblock(){

    setVisible(false);
    // Dereference the old ones, but they are still running...        
    firstCircleThr = null;
    secoundCircleThr = null;
    lineThr = null;
    System.out.println("Yeah! OFF IT!");
}

例如...

public class FirstCircleRepaintThread extends Thread{


    public static final long SPEED_OF_ROTATING = 25L;

    @Override
    public void run(){
        //while(true){

            MainCycle.frame.panel.startAngleFirst = 34;
            int i = 0;

            Random r = new Random();

            // To infinity and beyond...                
            while(true){

你需要提供一些方法来停止这些线程......而不调用stop...

例如...

public class FirstCircleRepaintThread extends Thread{

    private volatile boolean keepRunning = true;

    public static final long SPEED_OF_ROTATING = 25L;

    public void kull() {

        keepRunning = false;
        interrupt();
        try {
            join();
        } catch (InterruptedException ex) {
        }

    }

    @Override
    public void run(){
        //while(true){

            MainCycle.frame.panel.startAngleFirst = 34;
            int i = 0;
            Random r = new Random();

            while(keepRunning){

现在在你身上block方法,你应该调用firstCircleThr.kull(),这将停止Thread回来之前...

如果您使用调试器或在周期之间保持框架可见,您可能会看到这一点......

现在,说了这么多,您违反了 Swing 的单线程规则,从除事件调度线程之外的每个线程更新 UI 的状态。

看一眼Swing 中的并发 http://docs.oracle.com/javase/tutorial/uiswing/concurrency/并考虑使用SwingWorker http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html or Swing Timer http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html.

您应该考虑维护尽可能少的后台进程,以保持性能并降低更改模型和接口的复杂性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高线程速度[关闭] 的相关文章

  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 异步填充数据集

    下面的方法用于填充数据集 如果我们以同步方式调用这个方法 它就可以正常工作 但现在我们需要以异步方式调用这个方法 那么我需要做哪些更改才能使下面的方法正常工作而不会出现任何问题 public DataSet Filldata string
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • Android 中的处理程序与异步调用

    目前我正在使用处理程序来调用 Web 服务方法以使其在后台运行 问题是它需要更多的时间来给出响应 在性能方面似乎更昂贵 现在我计划使用异步调用 哪一个是最好的 Android 中的处理程序和异步调用有什么区别 请帮我想出一个最好的解决方案
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 从 Photoshop 动作到 Photoshop 脚本?

    我希望 Photoshop 自动为给定文件夹执行以下任务 加载给定文件夹中的所有 PNG 文件 将每个文件的模式转换为RGB color 为每个文件添加一层 将文件另存为 PSD 并放在同一文件夹中 有人告诉我这可以通过 Photoshop
  • R 创建带有 R CMD 检查的参考手册

    我正在编写一个 R 包 并希望制作该包中所有函数的 pdf 参考手册 我从here http grokbase com p r r devel 124dzqqxhg rd creating a reference manual during
  • Woocommerce 3 中无需在线支付交易的订单的 Google 分析集成

    我正在尝试在 Google 分析中添加有关订单的信息 但统计中并没有显示订单的接收信息 该网站不使用在线支付 或许原因与此有关 我用的是answer https stackoverflow com questions 52174961 go
  • Passport JS 中的 req.isAuthenticated() 是如何实现的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在passportJS文档中 我认为passportisAuthenticated功能没有很好地记录 How is req isAut
  • 在 .NET Core MVC 应用程序中使用 TempData 时出现错误 500

    你好 我正在尝试添加一个对象TempData并重定向到另一个控制器操作 我在使用时收到错误消息 500TempData public IActionResult Attach long Id Story searchedStory this
  • 固定div与滚动条重叠

    我在使用滚动条将固定 div 放置在其他 div 中时遇到问题 它与滚动条重叠 它发生在 safari 和 ie 11 下 当我将 z index 设置为低于带有滚动条的 div 时 固定 div 位于其下方 并且它会丢失交互 您无法单击链
  • Json.net 不再在重复的情况下抛出异常

    我正在尝试将我的 C 应用程序从 Newtonsoft JSON 6 升级到最新版本 9 0 1 我注意到反序列化包含重复元素的对象时行为发生了变化 例如 name test data myElem 1 myElem 2 当反序列化此类对象
  • 如何测试片段视图对用户是否可见?

    我有一个ViewPager 每个页面都是一个Fragment视图 我想测试片段是否位于可见区域 Fragment isVisible 唯一的测试 该片段附加到一个活动 片段设置为可见 该片段已添加到视图中 ViewPager 将创建 3 个
  • Airflow DAG动态结构

    我正在寻找一个可以决定 dag 结构的解决方案当 dag 被触发时因为我不确定我必须运行的操作员数量 请参阅下面我计划创建的执行顺序 Task B 1 Task C 1 Task B 2 Task C 2 Task A Task B 3 g
  • 您将如何制定每日课程表?

    我想做的事情非常简单 但我正在努力找到最好或最优雅的方法来做到这一点 我现在正在构建的 Rails 应用程序将有一个每日课程表 对于每个类别 与此问题相关的字段是 一周中的天 起始时间 结束时间 单个条目可能是这样的 星期几 星期三 开始时
  • 在php中显示html文件的内容[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 大家好 我
  • 如何解决“TypeError:callback.apply不是函数”?

    我正在做一个大学项目 我已经阅读了关于我的问题的每一篇文章 但我还没有找到解决方案 也许你可以帮我 代码如下 viewerObj update id currentIDViewerVar minutesWatched 5 upsert tr
  • 为什么这个程序在 Python 中比 Objective-C 更快?

    我感兴趣了这个小例子 https stackoverflow com questions 5523058 how to optimize this python code from thinkpython exercise 10 10 55
  • 在 Safari 中提交表单时加载 GIF 会停止动画

    看看这个简单的JSFiddle http jsfiddle net VpDUG 4952 忽略所有的javascript代码 这里的问题只是关于动画加载GIF 我想在提交表单之前显示动画加载 GIF 我试过这个 setTimeout fun
  • 如何覆盖 .bash_aliases 中设置的别名

    我喜欢使用 bash 别名来自定义 bash 命令 有没有办法覆盖 bash 别名设置 或者我应该将别名重命名为与原始命令不同的名称 例如 我的 bash aliases 包括 alias ls ls ltr 如果我只想检索文件名 是否需要
  • 如何使用 bash 大括号扩展制作乘法表?到目前为止我有这个: echo $[{1..10}*{1..10}]

    我想更深入地学习 bash 所以我决定制作一个乘法表 我有以下声明的功能 echo 1 10 1 10 但这给了我以下输出 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15
  • 为初学者覆盖 Magento 管理控制器

    在 Magento 管理部分 我想覆盖核心 Mage 的 Sales Order ShipmentController php 控制器文件 我尝试使用 from 和 to 标签重写URL 但没有成功 我不知道这样做的实际和正确方法是什么 因
  • 在Delphi中,如何让货币数据类型以不同的形式以不同的货币显示?

    我需要编写一个 Delphi 应用程序 从数据库中的各个表中提取条目 并且不同的条目将采用不同的货币 因此 我需要根据我加载的项目的货币 为每种货币数据类型 英镑 欧元等 显示不同的小数位数和不同的货币字符 有没有一种方法可以几乎全局地更改
  • XSLT 具有相同匹配的多个模板

    我目前坚持应用多个 xsl template 来对元素进行相同的匹配 下面的例子显示了这个问题 有谁知道使用两个 模板匹配 创建预期输出的 XSL 模板吗 由于技术原因 不可能将两个 模板 元素放在一起 Input
  • 提高线程速度[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 每次调用线程后 其速度都会增加 特别是 FirstCircleRepaintThread SecoundCircleRepaintThre