java - 如何提高以下java方法从链表中删除元素的性能

标签 java multithreading performance

从链表中删除节点的线程安全方法。

 public void delete(String x, LinkedList<String> list)
   {
      String lock = "false";
        for (int i = 0; i < list.size(); i++) {
            synchronized (lock) {
                if (list.get(i).equals(x)) {
                    lock = "true";
                    list.remove(i);
                }
                lock = "false";
            }
        }
   }

非常感谢!

编辑:上述方法是线程安全的,但其性能需要提高。这是一个面试问题。

最佳答案

  1. 同步方法本地的对象并没有真正做任何有用的事情。此外,覆盖对同步块(synchronized block)内锁定的对象的引用在目的上是令人困惑的。关于该代码用途的一些解释可能会帮助我们帮助您改进它:)

  2. 实际问题。 get(i)remove(i) 都要求您将列表迭代到位置 i。如果您使用列表的实际迭代器和迭代器的删除方法,则只需迭代整个列表一次。

关于java - 如何提高以下java方法从链表中删除元素的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10488272/

相关文章:

javascript - 将 JavaScript 正则表达式转换为 java

java - Android如何获取设备时间而不是时区时间

java - 动态改变Retrofit2接口(interface)的参数

java - 应用程序容器中的守护线程

android - 缓存和Json解析

java - 从 Android SQlite 数据库获取 ListView 的行 ID

java - 如何在 Java 中停止正在运行的线程

python - 示例 urllib3 和 python 中的线程

python - Python 中的实时中断

amazon-web-services - 重新部署后 Fargate 服务 CPU 跳跃或下降