multithreading相关内容

同步对象设置为空

我有两个线程 Thread1 和 Thread2 //线程1内同步(obj1){obj1 = null;}//在线程2内同步(obj1){做一点事} 如果 jvm 首先执行 thread1 并将 obj1 设置为 null,那么 thread2 会立即看到该更改还是需要一些时间,并且 jvm 仍然可以运行 thread2 同步块,因为 obj1 尚未为 null? 解决方案 这几乎肯定 ..
发布时间:2022-01-22 20:21:42 Java开发

Wait()/notify() 同步

我正在尝试检查等待/通知在 java 中的工作方式. 代码: 公共类测试器{公共静态无效主要(字符串[]参数){MyRunnable r = new MyRunnable();线程 t = 新线程(r);t.start();同步(t){尝试 {System.out.println("等待 t 完成");t.wait();System.out.println("等一下");} 捕捉(Inte ..
发布时间:2022-01-22 20:21:25 Java开发

为什么使用 StringBuilder?StringBuffer 可以与多个线程以及一个线程一起使用吗?

假设我们的应用程序只有一个线程.而我们正在使用 StringBuffer 那么有什么问题呢? 我的意思是如果StringBuffer可以通过同步处理多个线程,那么单线程工作有什么问题? 为什么要改用 StringBuilder? 解决方案 StringBuffers 是线程安全的,意味着它们有同步的方法来控制访问,因此只有一个线程可以访问 StringBuffer 对象的同步一 ..

在 notifyAll() 之前没有被线程锁定的同步对象

我想要一个布尔值来通知系统的某些部分特定服务已启动. 由于某些奇怪的原因,我收到错误 java.lang.IllegalMonitorStateException: object not locked by thread before notifyAll(). 奇怪的是 notifyAll() 位于一个同步块中,该块控制我调用 notifyAll() 的对象. 我的课是这样开始的 ..

为什么内存重新排序在单核/处理器机器上不是问题?

考虑以下取自 Wikipedia 的示例,稍作修改,其中程序的步骤对应于各个处理器指令: x = 0;f = 0;线程#1:而(f == 0);打印 x;线程#2:x = 42;f = 1; 我知道,由于无序执行,当线程在两个不同的物理内核/处理器上运行时,print 语句可能会打印不同的值(42 或 0). 但是我不明白为什么这在单核机器上不是问题,因为这两个线程在同一个核心上运行(通 ..

java在不同的线程中访问一个对象

我搜索了很多,但找不到特定的解决方案.在stackoverflow上也有一些关于此的问题,但我无法找到令人满意的答案,所以我再次询问. 我在 java 中有一个类如下.我知道如何在 java 中使用线程. //如果有打印错误请不要考虑语法,因为我输入代码只是为了在我的脑海中展示这个概念公共课我的课{私有列表mylist=new ArrayList();公共添加字符 ..
发布时间:2022-01-22 20:13:58 Java开发

如何同时运行两个函数

我正在运行测试,但我想同时运行 2 个函数.我有一个摄像头,我告诉它通过 suds 移动,然后我通过 SSH 登录到摄像头以检查摄像头设置的速度.当我检查速度时,相机已经停止,所以没有速度可用.有没有办法让这些功能同时运行以测试相机的速度.示例代码如下: 类VerifyPan(TestAbsoluteMove):定义运行测试(自我):self.dest.PanTilt._x=350# 运行肥皂移 ..
发布时间:2022-01-22 20:13:27 Python

存储过程中的 TSQL 互斥访问

多个网络服务器访问 SQL Server 以获取数字代码,当此代码不存在时,它必须由 SQL Server 自动生成. 我需要确保即使有两个并发调用进来并且代码不存在,也只会创建一个代码并且两个调用都返回相同的代码.所以我必须这样做: 开始锁定如果代码存在返回码别的生成代码返回码端锁 我已经阅读了一些关于隔离级别和表锁定的内容,但我对所有这些都感到非常混乱.首先,我认为 SERIALIZ ..

如果在同步方法中调用 thread.yield() 是否会失去对对象的锁定?

我了解 Thread.currentThread().yield() 是对线程调度程序的通知,它可以将 cpu 周期分配给具有相同优先级的其他线程(如果存在).我的问题是:如果当前线程已锁定某个对象并调用 yield(),它会立即失去该锁定吗?而当线程调度器发现没有这样的线程来分配cpu周期时,调用yield()的线程将再次争夺锁定它之前丢失的对象?? 我在 javadoc 和论坛中找不到它 ..
发布时间:2022-01-22 20:11:31 Java开发

易失性读取发生在易失性写入之前吗?

我试图理解为什么这个例子是一个正确同步的程序: a - 易失性线程1:x=a线程2:a=5 因为存在冲突的访问(对 a 进行写入和读取),所以在每个顺序一致性执行中,访问之间的关系必须先发生.假设顺序执行之一: 1.x=a2. a=5 1 发生在 2 之前,为什么? 解决方案 不,在同一变量的 volatile 写入之前(按同步顺序)进行 volatile 读取不一定 happen ..
发布时间:2022-01-22 20:11:18 Java开发

如何创建同步数组列表

我已经创建了这样的同步数组列表 导入 java.text.SimpleDateFormat;导入 java.util.*;类 HelloThread{诠释我=1;列表数组列表;公共无效去(){arrayList=Collections.synchronizedList(new ArrayList());线程 thread1=new Thread(new Runnable() {公共无效运行(){ ..
发布时间:2022-01-22 20:11:12 Java开发

托管 C++ 中的 C# 的 lock()

托管 C++ 是否具有与 C# 等效的 lock() 和 VB 的 SyncLock?如果是这样,我该如何使用它? 解决方案 锁/SyncLock 的等价物是使用 Monitor 类. 在 .NET 1-3.5sp 中,lock(obj) 会: Monitor.Enter(obj);尝试{//做工作}最后{Monitor.Exit(obj);} 从 .NET 4 开始,它将是: ..
发布时间:2022-01-22 20:11:02 其他开发

在 Java 中使用 synchronized (Thread.currentThread()){...} 的目的是什么?

我在我们的项目中遇到了以下代码: 同步的 (Thread.currentThread()){//一些代码} 我不明白在 currentThread 上使用同步的原因. 有什么区别 同步的 (Thread.currentThread()){//一些代码} 只是 //一些代码 你能举个例子说明区别吗? 更新 更详细的这段代码如下: 同步的 (Thread.current ..

在 C# 中锁定空闲堆栈和队列

有谁知道是否有任何可用于 .NET 的无锁容器库? 最好是被证明有效且比我们在 .NET 中使用的同步包装器更快的东西. 我在 .NET 上找到了一些文章,但没有一篇指定任何速度基准测试,也没有激发人们对其可靠性的信心. 谢谢 解决方案 迟到了,但总比没有好,我认为我会将 Julian Bucknalls 的文章添加到此列表中. 但他没有性能数据.在我对他的结构的测 ..

请解释 Java 内存模型中说明的初始化安全性

有人可以按照 Java 内存模型的要求解释 初始化安全 吗? final 字段如何帮助实现初始化安全? 构造函数在确保初始化安全方面扮演什么角色? 解决方案 初始化安全性提供了一个外部线程在其完全构造(初始化)状态下可以看到的对象.前提是对象不应过早发布,即.在它的构造函数中.一旦确保了这一点,JMM 就要求声明为 final 的字段具有某些行为.首先,所有 final 对象字段都保证 ..