java - GraphStream 线程同步

标签 java multithreading user-interface graphstream

我正在尝试创建一个用于演示图形和算法的工具。为此,我找到了 GraphStream 库。我已阅读其所有文档和教程,但我无法使这一件事发挥作用。我正在尝试将图形放入我的自定义 GUI(带有按钮的左侧菜单和右侧图形空间)中,并且我设法做到了这一点。现在,当我启用两个按钮时:生成 - 使用随机生成器创建图形,清除 - 清除图形,一切正常,但在清除后,当我按生成时,我收到以下错误:

Exception in thread "Thread-2" org.miv.pherd.IdAlreadyInUseException: a particle with the same identifier already exists (0)

我不明白为什么这是一个问题,因为在没有 gui 的简单测试程序中,我在 main 中编写了简单的代码来执行相同的操作并且它有效:

public class Test {

public static void main(String[] args){

     Graph graph = new SingleGraph("test");

      graph.display();

      Generator generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }

      generator.end();

      graph.clear();
      generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }
      generator.end();


}

这段代码可以工作,但是当我在 GUI 中使用按钮执行它时,我会抛出上面提到的错误。我还检查了我的程序中正在运行多少个线程,其中似乎有 3 个。我希望我的问题很清楚并且有人可以帮助我。谢谢大家!

最佳答案

这是由 BarabasiAlbertGenerator 类中的已知错误引起的(请参阅相应的 Graphstream users thread )。

此错误已在库的 1.3.x 版本中修复,目前可在 http://graphstream-project.org/pub/1.x/nightly-build/last/ 作为夜间构建版本使用。

(将来,此修复应该成为 regular Graphstream downloads 的一部分)

关于java - GraphStream 线程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27557330/

相关文章:

java - SynchronizedMap 并发修改异常

java - 文件名上的黄色背景在 Intellij 中意味着什么?

java - 为什么使用多线程 ping IP 段时得到不同的结果?

android - 在 Android 上显示列表过滤器的首选 UI 元素?

Android 按钮图像变得模糊?

java - 如何让 Tomcat(等)接受 HTTPS 代理请求?

java - Hibernate+Spring框架项目映射错误(异常)

c - 通过箭头键选择 c 中的一行

java - 创建打印数组的方法

java - 在 java 1.6 中以优雅的方式切换字符串