小编Gab*_*lBB的帖子

为什么我需要同步Collections.synchronizedList返回的列表

我在dos.oracle.com找到了这个

public static List synchronizedList(列表列表)

返回由指定列表支持的同步(线程安全)列表.为了保证串行访问,必须通过返回的列表完成对后备列表的所有访问.当迭代它时,用户必须手动同步返回的列表:

  List list = Collections.synchronizedList(new ArrayList());
      ...
  synchronized(list) {
      Iterator i = list.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我必须同步列表来迭代它,如果Collections.synchronizedList();它应该返回已经同步的列表?

我只是在两个线程中访问列表:一个线程只添加,另一个线程获取和删除.您建议在此方案中使用哪些其他类?

谢谢阅读.

java multithreading synchronization arraylist

19
推荐指数
1
解决办法
4625
查看次数

为什么我可以将整数文字分配给短类型变量但不分配给短类型方法参数?

我为什么这样做:

short a = 5;
Run Code Online (Sandbox Code Playgroud)

但不是这个:

void setNum(short a);

setNum(5);
Run Code Online (Sandbox Code Playgroud)

它抛出:

从int到short的可能有损转换

我知道5是一个整数字面值,你必须强制转换它.我也明白,如果值不是常数,那么显然需要抛出该错误,因为该值可能达到短类型的限制.但是为什么如果编译器知道我传递一个short可以容纳的常量(如在赋值中)它不会让它编译?我的意思是,他们之间有什么区别?

java primitive short

15
推荐指数
1
解决办法
1505
查看次数

为什么"Object [] object = new String [] []"编译? - Java

为什么这段代码会编译?

Object[] object = new String[5][5];
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果我创建的数组对象的尺寸不同于引用变量中指定的数组,我为什么要这样做?

这不编译:

String[] strings = new String[5][5];
Run Code Online (Sandbox Code Playgroud)

那么这里发生了什么?

java arrays

9
推荐指数
1
解决办法
1471
查看次数

在 Github Actions 工作流中获取当前作业名称

我想在其中一个步骤中引用正在运行的作业名称。这些是 Github 给我们的选项:https : //help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#job-context。我看到的更接近的是“job.container.id”。这会给我设定的工作名称吗?听起来不像。不幸的是,我无法再测试这个,因为我超出了 Github Actions 的免费使用限制

github github-actions

6
推荐指数
1
解决办法
1134
查看次数

@Size 注释无法识别 (JPA)

我想在尝试将实体插入/更新到数据库之前验证字符串的长度。

@Size(min = 1, max = 45)
@Column(name = "name", nullable = false, length = 45)
private String name;
Run Code Online (Sandbox Code Playgroud)

我的问题是使用 NetBeans 7.3、JDK 1.6、EclipseLink (JPA 2.0) 无法识别 @Size 注释。

有替代方案吗?

java jpa eclipselink

5
推荐指数
1
解决办法
3884
查看次数

StringBuilder是否在每个操作中创建一个新的String?

使用此代码创建了多少个对象? - 我知道3个字符串文字在字符串常量池中,而StringBuilder对象在堆中但是当我调用reverse(),insert()或append()时它是否在池中创建了一个新字符串?

StringBuilder sb = new StringBuilder("abc");
sb.append("def").reverse().insert(3, "---");
System.out.println( sb );
Run Code Online (Sandbox Code Playgroud)

java string stringbuilder

5
推荐指数
1
解决办法
1224
查看次数

GitHub API:获取固定存储库

我正在查看文档,但找不到如何执行此操作。正如标题所说:如何使用 GitHub API 获取用户的固定存储库?

github github-api

2
推荐指数
1
解决办法
848
查看次数

调试时 Visual Studio Code 不是 npm 启动我的 React JS 应用程序

我想在 Visual Studio Code 上调试 React JS 应用程序,所以我正在遵循本教程: https: //code.visualstudio.com/docs/nodejs/reactjs-tutorial

我被困在:

确保您的开发服务器正在运行(“npm start”)。然后按 F5 或绿色箭头启动调试器并打开一个新的浏览器实例。

正在打开一个新的 Chrome 实例,请求“ http://localhost:3000 ”,但我的应用程序并未真正运行,它似乎只是运行了调试器。

如果我手动npm start运行我的应用程序。所以我猜想launch.jsonVisual Studio Code 缺少一些东西来使用调试器启动应用程序。这就是为什么我坚持确保我的开发服务器正在运行该命令,因为我不知道我到底在哪里检查这个

这是我的 launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:3000",
            "webRoot": "${workspaceRoot}"
        },
        {
            "type": "chrome",
            "request": "attach",
            "name": "Attach to Chrome",
            "port": 9222,
            "webRoot": "${workspaceRoot}"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是我的 package.json:

{
  "name": "tic-tac-toe",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^15.6.1", …
Run Code Online (Sandbox Code Playgroud)

reactjs visual-studio-code

1
推荐指数
1
解决办法
4872
查看次数

当用户卸载 VSCode 扩展时如何执行代码?

我阅读了整个 Visual Studio 代码扩展性文档,但没有找到类似的内容。我想进行清理,不是在扩展程序停用时,而是在卸载扩展程序时。我还尝试使用 package.json 中的“uninstall”和“postUninstall”脚本字段,但它没有执行脚本。这可能吗?

visual-studio-code vscode-extensions

1
推荐指数
1
解决办法
605
查看次数

Windows资源管理器是用高级语言创建的吗?

我想知道是否使用ListView和其他组件在C#中创建了Windows资源管理器,是这样的吗?

c# windows-explorer

0
推荐指数
1
解决办法
167
查看次数