相关疑难解决方法(0)

什么是"线程安全"代码?

这是否意味着两个线程不能同时更改基础数据?或者它是否意味着当多个线程运行时,给定的代码段将以可预测的结果运行?

language-agnostic concurrency multithreading programming-languages

339
推荐指数
15
解决办法
16万
查看次数

什么是java中的线程安全?

可能重复:
线程安全是什么意思?

我很困惑任何类都是Thread安全的.我理解,如果任何类是线程安全的,那么它的方法有一些特定的(同步).是对还是错?请帮助我详细说明它的含义.

java thread-safety

51
推荐指数
2
解决办法
13万
查看次数

Java线程 - 内存一致性错误

我正在阅读Sun关于并发的教程.

但我无法准确理解内存一致性错误是什么?我搜索了一下,但没有找到任何有用的教程或文章.

我知道这个问题是主观的,所以你可以给我链接到上述主题的文章.

如果你用一个简单的例子解释它会很棒.

java multithreading shared-memory

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

并发数据库访问给出IllegalStateException

我试图只为1个方法生成一个线程.我得到了IllegalStateException(见下文).这个方法接受数据库连接和数据库名称,它将从中生成XML.(那部分可行,我只是想通过一个新线程让它更快,因为我有多个XML文件要创建.

    Thread table = new Thread(new Runnable() {
    public void run() {
    try {
     System.out.println("starting");
     tableXml(tableConn, dbName);
     System.out.println("ending");
     }
     catch (Exception e) {
      // TODO Auto-generated catch block
        e.printStackTrace();
      }
  }
});

    table.start();
Run Code Online (Sandbox Code Playgroud)

例外:

java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED
    at java.nio.charset.CharsetEncoder.throwIllegalStateException(CharsetEncoder.java:951)
    at java.nio.charset.CharsetEncoder.flush(CharsetEncoder.java:640)
    at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:769)
    at com.informix.lang.JavaToIfxType.doConversion(JavaToIfxType.java:841)
    at com.informix.lang.JavaToIfxType.JavaToIfxChar(JavaToIfxType.java:145)
    at com.informix.jdbc.IfxVarChar.toString(IfxVarChar.java:247)
    at com.informix.jdbc.IfxResultSet.getString(IfxResultSet.java:742)
    at com.informix.jdbc.IfxResultSet.getString(IfxResultSet.java:785)
    at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:225)
    at com.test.ex.ExportTask$1.run(ExportTask.java:151)
    at java.lang.Thread.run(Thread.java:662)
Run Code Online (Sandbox Code Playgroud)

导致异常的代码行是a resultSet.executeQuery();

所以问题是:我做错了什么?

感谢您的帮助,如果您需要信息,请与我们联系

java multithreading

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

如果单例不是线程安全的,这究竟意味着什么?

我已经阅读了他对 Singleton 的基本 Java 实现,因为我将在我的课堂上介绍设计模式:

public final class ClassSingleton {

    private static ClassSingleton INSTANCE;
    private String info = "Initial info class";

    private ClassSingleton() {        
    }

    public static ClassSingleton getInstance() {
        if(INSTANCE == null) {
            INSTANCE = new ClassSingleton();
        }

        return INSTANCE;
    }

    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

用过几次,对它很熟悉。然而,当我深入研究这个话题时,我发现这个版本根本不是线程安全的。

这究竟是什么意思?如果多个线程访问它并创建一个新实例,是否会创建更多不同的实例?或者“安全”在哪里不复存在?

感谢您提前回答。

java singleton

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