synchronization相关内容

HttpSession 中的同步是否可行?

更新:问题后立即解决. 问题: 通常,同步是在 JVM 中序列化并行请求,例如 private static final Object LOCK = new Object();公共无效doSomething(){...同步(锁定){...}...} 在查看 Web 应用程序时,“JVM global"上的一些同步范围可能成为性能瓶颈,并且仅在用户的 HttpSession 会更有意 ..
发布时间:2022-01-22 19:53:54 Java开发

无锁算法真的比全锁算法表现更好吗?

Raymond Chen一直在做一个巨大 系列 在 无锁 算法.除了 InterlockedXxx 函数的简单案例之外,所有这些函数的流行模式似乎是它们实现自己的锁.当然,没有处理器锁,但在每个 CPU 上反复循环以确保一致性的概念非常类似于自旋锁.作为自旋锁,它们的效率将低于操作系统附带的通用锁,因为它们在等待其他线程时不会产生对它们的量子的控制.因此,每当有人来找我说“但我的算法是无锁的"时, ..
发布时间:2022-01-22 19:53:44 其他开发

隐式、显式和流式等待之间的区别

implicitwait()、explicitwait() 和 fluentwait() 之间的确切区别是什么?可以举例说明吗? 解决方案 我发布了 一篇关于此的博客文章,我想我提供了一些其他答案错过的非常详细的信息. 隐式等待:在隐式等待期间,如果 Web 驱动程序由于其可用性而无法立即找到它,则 Web 驱动程序将定期轮询 DOM(以 0.5 秒的间隔或取决于在驱动程序浏览器实现 ..
发布时间:2022-01-22 19:53:27 其他开发

Integer 对象的同步块

我刚刚在 Java 中遇到了同步块,并编写了一个小程序来测试它是如何工作的. 我创建了 10 个线程,并让每个线程将一个 Integer 对象递增 1000 次. 所以在同步的情况下,我会假设所有线程完成工作后的结果为 10000,而没有同步的结果小于 10000. 但是,同步并没有像我预期的那样工作. 我猜这与对象的不变性有关. 我的程序: 公共类 SyncTes ..
发布时间:2022-01-22 19:53:20 Java开发

确保按顺序获取 Java 同步锁?

我们有两个线程通过同步方法访问一个列表.我们可以 a) 依靠运行时间来确保他们每个人都将根据他们尝试的顺序获得对该方法的访问权限或 b) 虚拟机是否遵循任何其他规则 c) 有没有更好的方法来序列化请求? 解决方案 不,同步将按任意顺序授予访问权限(取决于 JVM 实现).这甚至可能导致线程在某些情况下饿死. 您可以使用 ReentrantLock(从 Java 5. ..
发布时间:2022-01-22 19:52:57 Java开发

排序线程按照创建/启动的顺序运行

如何按照实例化的顺序对线程进行排序.例如我怎样才能让下面的程序按顺序打印数字 1...10. 公共类 ThreadOrdering {公共静态无效主要(字符串[]参数){类 MyRunnable 实现 Runnable{私有最终 int 线程号;MyRunnable(int threadnumber){this.threadnumber = 线程数;}公共无效运行(){System.out.pr ..
发布时间:2022-01-22 19:52:46 Java开发

更改指针是否被视为 C 中的原子操作?

如果我有一个通过引用读取缓存类型内存的多线程程序.我可以通过主线程更改此指针,而不会冒任何其他线程读取意外值的风险吗? 在我看来,如果更改是原子的,那么其他线程要么读取旧值,要么读取新值;永远不要随机内存(或空指针),对吧? 我知道无论如何我可能应该使用同步方法,但我仍然很好奇. 指针更改是原子的吗? 更新:我的平台是 64 位 Linux (2.6.29),虽然我也想要一 ..
发布时间:2022-01-22 19:51:21 其他开发

使用等待时 Monitor.Exit 上的 SynchronizationLockException

我正在创建一段代码,用于从我们拥有的旧系统中获取网页.为了避免过度查询,我将获取到的 URL 缓存起来.我正在使用 Monitor.Enter、Monitor.Exit 并仔细检查以避免发出两次请求,但是在使用 Monitor.Exit,我得到了这个异常: System.Threading.SynchronizationLockException 被捕获H结果=-2146233064Messag ..

使用字符串作为锁做线程同步

在查看一些遗留应用程序代码时,我注意到它使用字符串对象进行线程同步.我正在尝试解决该程序中的一些线程争用问题,并且想知道这是否会导致一些奇怪的情况.有什么想法吗 ? 私有静态字符串 mutex= "ABC";内部静态 void Foo(Rpc rpc){锁(互斥锁){//做一点事}} 解决方案 这样的字符串(来自代码)可能是“实习".这意味着“ABC"的所有实例都指向同一个对象.即使跨 Ap ..
发布时间:2022-01-22 19:51:09 C#/.NET

你应该同步运行方法吗?为什么或者为什么不?

我一直认为在实现 Runnable 的 java 类中同步 run 方法是多余的.我想弄清楚人们为什么这样做: 公共类 ThreadedClass 实现 Runnable{//其他的东西公共同步无效运行(){而(真)//在线程中做一些事情}}} 这似乎是多余和不必要的,因为他们正在为另一个线程获取对象的锁.或者更确切地说,他们明确表示只有一个线程可以访问 run() 方法.但是既然是run方法 ..
发布时间:2022-01-22 19:50:52 Java开发

在多个设备之间同步 JS 时间

我正在使用精彩的 reveal.js 库来创建 HTML 幻灯片.我唯一的问题是我需要它在多个设备之间进行同步. 目前我正在从服务器向时间发出 AJAX 请求,并为页面保留一个内部时钟. 函数同步时间(){//设置我们的时间对象,由 HTTP DATE 标头同步//通过 JS 获取页面以获取标题console.log("同步时间")var r = new XMLHttpRequest(); ..
发布时间:2022-01-22 19:50:37 前端开发

确保 Spring Quartz 作业执行不重叠

我有一个 Java 程序,它每 20 秒从 Spring Qquartz 执行一次.有时只需几秒钟即可执行,但随着数据变大,我确信它会运行 20 秒或更长时间. 如何防止 Quartz 在一个实例仍在执行时触发/触发作业?解雇 2 个在数据库上执行相同操作的作业不会那么好.有没有办法进行某种同步? 解决方案 如果你需要做的只是每 20 秒开火一次,那么 Quartz 是严重的矫枉过正 ..
发布时间:2022-01-22 19:50:30 Java开发

在 C# 中是否有保证 FIFO 顺序的同步类?

它是什么以及如何使用? 我需要它,因为我有一个每秒插入数据库的计时器,并且我在计时器处理程序和主线程之间有一个共享资源.我想保证如果计时器处理程序在插入中花费的时间超过一秒,则应按顺序执行等待的线程.这是我的计时器处理程序的示例代码: private void InsertBasicVaraibles(object param){尝试{DataTablesMutex.WaitOne();/ ..
发布时间:2022-01-22 19:50:05 C#/.NET

如何通过钥匙获得锁

在不锁定整个集合的情况下,防止同时更新键值集中的一条记录的最佳方法是什么?从语义上讲,我正在寻找某种按键锁定(理想情况下,Java 实现,但不一定): 接口 LockByKey {无效锁(字符串键);//获取一个键的独占锁无效解锁(字符串键);//释放一个键的锁} 此锁旨在同步对远程存储的访问,因此不能选择某些同步的 Java 集合. 解决方案 Guava 在 13.0 中发布了类似的 ..
发布时间:2022-01-22 19:49:42 Java开发

Java 同步块与 Collections.synchronizedMap

以下代码是否设置为正确同步 synchronizedMap 上的调用? 公共类 MyClass {私有静态映射>synchronizedMap = Collections.synchronizedMap(new HashMap>());公共无效doWork(字符串键){列表值=空;while ((values = synchronizedMap.remove(k ..
发布时间:2022-01-22 19:49:37 Java开发

C# 中各种线程同步选项有什么区别?

谁能解释一下两者的区别: 锁定(某个对象){} 使用互斥锁 使用信号量 使用监视器 使用其他 .Net 同步类 我就是想不通.在我看来,前两个是一样的? 解决方案 好问题.我可能错了..让我试试..我的原始答案的修订版#2..有了更多的理解.感谢您让我阅读:) 锁(obj) 是一个用于(对象内?)线程同步的 CLR 构造.确保只有一个线程可以获取对象的锁的所 ..
发布时间:2022-01-22 19:49:23 C#/.NET