synchronization相关内容

等待计时器在 Java 中完成

我正在使用 java.util.定时器 来安排一个周期性的任务.在某一时刻,我想关闭它,然后等待它完成. Timer.cancel() 将阻止任何未来的任务运行.我如何确保当前没有运行任何任务(或者等待它们运行?) 我可以引入外部同步机制,但我看不出它们如何涵盖所有情况.例如,如果我在任务中的某个监视器上进行同步,我仍然会错过任务刚开始执行但没有占用监视器的情况. 等待所有任务真 ..
发布时间:2022-01-22 20:04:30 Java开发

如何确保我不会同时在两个线程之间共享同一个套接字?

我有一个处理套接字的代码,我需要确保我不会在两个线程之间共享同一个套接字.在下面的代码中,我有一个后台线程,它每 60 秒运行一次并调用 updateLiveSockets() 方法.在 updateLiveSockets() 方法中,我迭代了我拥有的所有套接字,然后通过调用 SendToQueue 类的 send 方法开始一个一个地 ping 它们并根据回复,我将它们标记为活的或死的. 现 ..

双重检查锁定文章

我正在阅读关于“Double-已检查锁定"并且超出了本文的主要主题,我想知道为什么在文章的某些地方作者使用了下一个成语: 清单 7. 尝试解决乱序写入问题 public static Singleton getInstance(){如果(实例 == 空){synchronized(Singleton.class) {//1单例 inst = 实例;//2如果(inst == null){s ..
发布时间:2022-01-22 20:03:45 Java开发

在 Java 中,我可以依靠引用分配是原子的来实现写入时复制吗?

如果我在多线程环境中有一个未同步的 java 集合,并且我不想强制集合的读取器同步[1],那么我可以同步写入器并使用引用赋值的原子性可行吗?比如: 私有集合 global = new HashSet();//在此之后开始线程无效 allUpdatesGoThroughHere(对象示例操作数){//我的假设是这可以防止块中的操作被重新排序同步(全局){集合副本 = new HashSet(glo ..
发布时间:2022-01-22 20:03:20 Java开发

Finder Sync Extension 和 Main App 应该如何通信?

我的用例:我有一个用于同步文件的“MainApp".我希望“MainApp"处理所有有关同步的服务器调用和其他 REST API 调用,例如文档共享等. 另一方面,我会有一个 Finder 同步扩展,它会显示同步状态图标覆盖.它还有一个文件上下文菜单项“共享",它会显示一个共享对话框,用户可以在其中选择与谁共享文件. 问题: FinderSyncExtension 和 MainA ..
发布时间:2022-01-22 20:03:13 其他开发

Java 监视器有多重?

假设我有一个包含数千个对象的数组,以及可能访问每个对象的少量线程.我想保护对其中一种对象方法的访问.最简单的方法是将该方法声明为 synchronized.但是,这可能会导致创建数千个监视器,无论它们以何种方式实现.如果这是 Win32,我永远不会创建数以千计的内核对象,例如 Mutex,但 CRITICAL_SECTIONs 可能是合理的.我想知道Java中的情况是什么.鉴于争用的可能性很低,使 ..
发布时间:2022-01-22 20:03:03 Java开发

使用 volatile 和 synchronized 时,内存刷新或发布到各个线程的范围是什么?

此问题仅涉及内存可见性,而不是发生在之前和之后.Java中有四种方法可以保证一个线程中对内存的更改对另一个线程可见.(参考 http://gee.cs.oswego.edu/dl/cpj/jmm.html) 写入线程释放同步锁,读取线程随后获取相同的同步锁. 如果一个字段被声明为易失性,写入它的任何值都会在写入线程执行任何进一步的内存操作之前被写入线程刷新并使其可见(即,为了手头的目的,它 ..
发布时间:2022-01-22 20:02:45 Java开发

解释使用迭代器时集合的同步?

我知道像 Hashtable 这样的集合是同步的,但是有人可以向我解释它是如何工作的, 什么时候访问仅限于并​​发调用?例如,假设我使用了一些这样的迭代器: 哈希表map = new Hashtable();无效dsomething1(){for (Iterator>i = map.entrySet().iterator(); i.hasNext();){//做 ..
发布时间:2022-01-22 20:02:38 Java开发

自己的 Android 同步适配器?

Android 2.0 的新闻稿称,新版本支持同步适配器,因此电子邮件和日历不能只与 gmail 和 Exchange 同步.但是,网上没有关于如何编写这样一个同步适配器的信息.有没有人尝试过并提供了一些示例代码? 解决方案 Sam Steele 的这两篇文章(2010 年 1 月 23 日)是关于 last.fm 同步适配器.不要错过第二部分和文末提到的开源项目. http://w ..
发布时间:2022-01-22 20:01:05 移动开发

为什么同步块比同步方法更好?

我已经开始学习线程同步了. 同步方式: 公共类计数器{私有静态int计数= 0;公共静态同步 int getCount() {返回计数;}公共同步 setCount(int count) {this.count = 计数;}} 同步块: 公共类单例{私有静态易失单例_instance;公共静态单例getInstance(){如果(_instance == null){同步(Single ..
发布时间:2022-01-22 20:00:59 Java开发

Monitor.Wait 需要同步吗?

我开发了一个通用的生产者-消费者队列,它由 Monitor 以下列方式脉冲: 入队: public void EnqueueTask(T task){_workerQueue.Enqueue(task);Monitor.Pulse(_locker);} 出队: private T Dequeue(){T出列项;if (_workerQueue.Count > 0){_workerQu ..
发布时间:2022-01-22 20:00:30 C#/.NET

多个线程同时向不同步的ArrayList的对象添加元素可能会导致哪些问题?

多个线程同时向不同步的ArrayList对象添加元素可能会导致哪些问题? 尝试使用具有多个线程的静态 ArrayList 进行一些实验,但找不到太多. 在这里,我期待在多线程环境中不同步 ArrayList 或类似对象的许多副作用. 任何显示副作用的好例子都将是可观的.谢谢. 下面是我的小实验,运行顺利,无一例外. 我也想知道为什么它没有抛出任何 Concurrent ..
发布时间:2022-01-22 20:00:25 Java开发

.NET 的 ManualResetEvent 和 WaitHandle 的 Java 等效项

我想知道 Java 是否提供了等效于 .NET 的 ManualResetEvent 和 WaitHandle 类,因为我想编写在给定超时期间阻塞的代码,除非触发事件. WaitHandle 和 ManualResetEvent 的 .NET 类为我所知的线程安全的接口提供了一个很好的、无忧的接口,那么 Java 必须提供什么? 解决方案 你有没有考虑过使用wait/notify(相 ..
发布时间:2022-01-22 20:00:18 Java开发