concurrency相关内容

线程对象在哪里创建?堆栈还是堆?

当我说: Thread t1 = new Thread(); 它是在堆上还是在堆栈上创建? 解决方案 Thread t1 = new Thread(); tl;dr 这会在堆中分配对象,即 t1. 随着每个新线程的出现,它都有自己的 pc 寄存器(程序计数器)和 Java 堆栈.如果线程正在执行 Java 方法(不是本机方法),则 pc 寄存器的值指示要执行的下一条指令.线程的 ..
发布时间:2021-12-28 23:06:59 Java开发

在执行批量更新和删除操作时避免 PostgreSQL 死锁

我们有一个没有对任何其他表的引用的表. ┬──────────────┬─────────────┬──────────────────┬──────────────────╮│id_A(bigint)│id_B(bigint) │val_1(varchar) │val_2(varchar) │╪===========╪============╪=============╪======╪==== ..

ConcurrentHashMap 是否有可能“死锁"?

我们在使用 ConcurrentHashMap 时遇到了一个奇怪的问题,其中两个线程似乎在调用 put(),然后在方法 Unsafe 中永远等待.公园().从外面看,ConcurrentHashMap内部就像一个死锁. 到目前为止,我们只见过这种情况发生一次. 谁能想到可能导致这些症状的任何事情? 编辑:相关线程的线程转储在这里: “[编辑] 线程 2" prio=10 tid ..
发布时间:2021-12-28 23:06:27 Java开发

为什么 ThreadGroup 受到批评?

我知道当前使用 Executors 而不是 ThreadGroup 的做法: 通常首选的处理线程的方式 从线程等中捕获异常... 但是,ThreadGroup 固有的缺陷是什么(我听说过对该类的模糊批评)? 感谢您的回答. 附注.这个似乎没有来回答这个问题. 解决方案 这在 Effective Java 第二版,第 73 条. 线程组最初被设想为一种机制出于 ..
发布时间:2021-12-28 23:06:19 Java开发

Javascript 信号量/测试和设置/锁定?

Javascript 中有原子测试和设置、信号量或锁定之类的东西吗? 我有 javascript 通过自定义协议调用异步后台进程(后台进程实际上运行在一个单独的进程中,与浏览器无关).我相信我遇到了竞争条件;后台进程在我的测试和我的设置之间返回,在 javascript 方面搞砸了.我需要一个测试和设置操作来使它成为一个真正的信号量. 这是尝试检测后台进程并将它们排队的 javascr ..
发布时间:2021-12-28 23:05:58 前端开发

关于Java死锁情况的问题

我正在学习 Java 中的死锁,并且有来自 Sun 官方教程的示例代码: 阿尔方斯和加斯顿是朋友,而且礼节的大信徒.一个严格的礼貌规则是当你鞠躬时对朋友,你必须保持鞠躬直到你的朋友有机会归还弓.不幸的是,这规则不考虑两个朋友可能会鞠躬同时对彼此. 公共类死锁{静态类朋友{私有最终字符串名称;公共朋友(字符串名称){this.name = 名称;}公共字符串 getName() {返回 th ..
发布时间:2021-12-28 23:05:52 Java开发

如果两个线程读取 & 会发生什么?写同一块内存

我的理解是,如果两个线程正在从同一块内存中读取数据,并且没有线程正在写入该内存,则该操作是安全的.但是,我不确定如果一个线程正在读取而另一个线程正在写入会发生什么.会发生什么?结果是不确定的吗?或者阅读只是陈旧的?如果过时的读取不是问题,是否可以对变量进行不同步的读写?或者有没有可能是数据被破坏了,读取和写入都不正确,在这种情况下应该始终同步? 我想说的是,我已经了解到这是后一种情况,内存访 ..
发布时间:2021-12-28 23:05:45 其他开发

ConcurrentHashMap,JDK8 中改进的并发特性

有没有并发高手能解释一下ConcurrentHashMap中并发特性和以前的JDK相比有哪些改进 解决方案 好吧,ConcurrentHashMap 已经完全重写.在 Java 8 之前,每个 ConcurrentHashMap 都有一个在构建时固定的“并发级别".出于兼容性原因,还有一个 接受这样一个级别的构造函数 尽管没有以原始方式使用它.映射被分成与它的并发级别一样多的段,每个段都有 ..
发布时间:2021-12-28 23:05:36 其他开发

Java长时间运行任务线程中断与取消标志

我有一个长时间运行的任务,例如: public void myCancellableTask() {而(一些条件){checkIfCancelRequested();做一些工作();}} 可以取消任务(请求取消并且 checkIfCancelRequested() 检查取消标志).通常,当我编写这样的可取消循环时,我使用一个标志来指示已请求取消.但是,我知道我也可以使用 Thread.inte ..
发布时间:2021-12-28 23:05:27 Java开发

尽管失败,如何继续执行Future序列?

来自 Future 对象的 traverse 方法在第一次失败时停止.我想要这个方法的一个宽容/宽容的版本,它在发生错误时继续执行序列的其余部分. 目前我们已将以下方法添加到我们的工具中: def traverseFilteringErrors[A, B Future[B]): Future[Seq[B]] = {val sentinelValue = null.asInstanceOf ..
发布时间:2021-12-28 23:05:16 其他开发

如何使用 rand_r 以及如何以线程安全的方式使用它?

我正在尝试学习如何使用 rand_r,并在阅读了这个问题后 我仍然有点困惑,有人可以看看并指出我遗漏了什么吗?据我了解, rand_r 使用一个指向某个值(或一块具有某个初始值的内存)的指针,并在每次调用时使用它来生成新数字.每个调用 rand_r 的线程都应该为它提供一个唯一的指针(或一块内存),以获得不同线程之间的“实际随机"数字.这就是为什么: int globalSeed;//线程1ra ..
发布时间:2021-12-28 23:05:06 C/C++开发

SQLite3 和多个进程

当多个进程访问一个 SQLite 数据库文件时,如何确保正确性? 解决方案 首先,避免并发访问 sqlite 数据库文件.并发性是 sqlite 的弱点之一,如果您有一个高度并发的应用程序,请考虑使用其他数据库引擎. 如果您无法避免并发或丢弃 sqlite,请将您的 write 事务包装在 BEGIN IMMEDIATE; ... END; 中.sqlite 中的默认事务模式是 DE ..
发布时间:2021-12-28 23:04:59 数据库

如何通过线程访问 Runnable 对象?

可能重复:need-help-returning-object-in-线程运行方法 你好.我有一个实现 runnable 的类,我有一个 List,用于存储用该类的不同对象实例化的线程.给定运行它们的线程对象,如何访问底层对象的属性?下面是一个例子: 公共类 SO {公共静态类 TestRunnable 实现 Runnable {公共字符串 foo = "你好";公共无效运行(){foo ..
发布时间:2021-12-28 23:04:52 Java开发

如果我自己不中断任何事情,我是否必须担心 InterruptedExceptions?

我在一个业余项目中使用 java.util.concurrent.Semaphore.它用于我正在编写的连接池类中.我可以毫不费力地使用它,除了这个方法: public void Acquire(int permit) 抛出 InterruptedException 这迫使我处理InterruptedException.现在,我不确定“中断"线程是什么意思,而且我从来没有在我的代码中这样做(好 ..
发布时间:2021-12-28 23:04:47 Java开发

为什么 UI 框架必须/应该是单线程的?

之前已经问过密切相关的问题: 为什么大多数 UI 框架都是单线程的?.莉>所有事件驱动的框架都应该是单线程的吗? 但这些问题的答案仍然让我在某些方面不清楚. 第一个问题的提问者问多线程是否有助于性能,回答者大多说不会,因为 GUI 不太可能成为现代硬件上 2D 应用程序的瓶颈.但这在我看来是一种偷偷摸摸的辩论策略.当然,如果您仔细构建了您的应用程序,除了在 UI 线程上调用 UI ..
发布时间:2021-12-28 23:04:39 其他开发

多个线程可以在 Java 中看到直接映射的 ByteBuffer 上的写入吗?

我正在研究使用 ByteBuffers 从内存映射文件构建(通过 FileChannel.map()) 以及内存中的直接 ByteBuffers.我正在尝试了解并发和内存模型约束. 我已经阅读了 FileChannel、ByteBuffer、MappedByteBuffer 等所有相关的 Javadoc(和源代码).很明显,一个特定的 ByteBuffer(和相关的子类)有一堆字段,状态不受 ..

有没有办法自动更新 MongoDB 中的两个集合?

我有一组消息: {消息 ID:对象 ID用户 ID:对象 ID消息:字符串读取:真|假} 以及每个用户的消息计数集合: {用户 ID:对象 ID总计:整数未读:int} 当我从“messages"集合中删除一条消息时,我还需要减少“counts"集合中的“total",并且有条件地(如果“messages.isread"==false)也减少“unread"字段. 为此,我需要首先检 ..
发布时间:2021-12-28 23:04:12 其他开发