是String s = "foobar";
原子的吗?
分配对象引用应该是,但是我不确定。
谢谢。
是的 。在Java中,所有引用分配都是原子的。
只需注意,这样的复合语句String s = new String("foobar")
不是原子的,因为它包含一个对象创建和一个单独的赋值。
另请注意,来自JLS-17.7的
“对long和double变量的分配可能不是原子的”
问题内容: 我无法通过实验进行检查,也无法从手册页中收集到它。 说我有两个过程,一个是将文件1从目录1移动(重命名)到目录2。假设正在运行的另一个进程同时将directory1和directory2的内容复制到另一个位置。复制是否可能以这种方式发生,即目录1和目录2都将显示文件1-即,目录1在移动之前被复制,目录2在移动之后被第一个进程复制。 基本上,rename()是原子系统调用吗? 谢谢 问题
Elixir中的字符串插入双引号之间,它们以UTF-8编码。 与C和C ++不同,默认字符串是ASCII编码的,只有256个不同的字符,UTF-8由66536 code points 。 这意味着UTF-8编码由许多不同的可能字符组成。 由于字符串使用utf-8,我们也可以使用符号:ö,ł等。 创建一个字符串 要创建字符串变量,只需将字符串赋值给变量 - str = "Hello world"
Fortran语言可以将字符视为单个字符或连续字符串。 字符串的长度可以只有一个字符,或者甚至可以是零长度。 在Fortran中,字符常量在一对双引号或单引号之间给出。 内在数据类型character存储字符和字符串。 字符串的长度可以由len specifier 。 如果未指定长度,则为1.您可以按位置引用字符串中的单个字符; 最左边的字符位于第1位。 字符串声明 声明字符串与其他变量相同 -
问题内容: 在Objective-C中,您可以区分原子性质和非原子性质: 根据我的理解,您可以安全地从多个线程读取和写入定义为原子的属性,而同时从多个线程中写入和访问非原子属性或ivars可能导致不确定的行为,包括严重的访问错误。 因此,如果您在Swift中有这样的变量: 我可以安全地并行读写该变量吗?(不考虑这样做的实际含义)。 问题答案: 假设尚无底层文档,这还为时尚早,但是您可以从汇编中学习
问题内容: 我知道没有锁定的C ++中增量操作不是原子的。 JVM会在其指令执行中添加任何锁吗? 问题答案: 不,这不对 检索c的当前值。 将检索到的值增加1。 将增加的值存储回c中。 原子性和线程干扰的Java文档 您需要使用关键字或使用方法来确保线程安全。 更新 : 要么
问题内容: 如果我有两个线程同时修改结构上的字符串字段,我是否总是会看到分配给该字段的一个或另一个字符串,但没有别的? 问题答案: 否。如果您需要原子操作,则存在。 在转到内存模型将所有相关的细节。在“内存模型”文档的顶部: 修改由多个goroutine同时访问的数据的程序必须序列化此类访问。 要序列化访问,请使用通道操作或其他同步原语(例如和 软件包中的原语)保护数据。