草庐IT

Multithreading

全部标签

c# - 让你的集合线程安全?

在设计一个集合类的时候,有什么理由不实现私有(private)锁来保证线程安全呢?或者我应该把这个责任留给Collection品的消费者吗? 最佳答案 isthereanyreasonnottoimplementlockingprivatelytomakeitthreadsafe?这取决于。您的目标是编写一个由多个线程访问的集合类吗?如果是这样,请使其成为线程安全的。如果没有,请不要浪费你的时间。这种东西就是人们所说的‘过早优化’解决您遇到的问题。不要试图解决您认为可能会在未来几年内遇到的future问题,因为您看不到future,

Java,不要等待线程完成

我需要找到一种方法来从静态调用中分离出一个线程,而不是等待线程完成。基本上,这是一种“即发即忘”的方法。有人能给我提供一个简单的例子来说明如何实现吗? 最佳答案 Threadt=newThread(newYourClassThatImplementsRunnable());t.start();//JDK8newThread(()->methodYouWantToRun()).start(); 关于Java,不要等待线程完成,我们在StackOverflow上找到一个类似的问题:

java - 顺序运行 Java 线程

您将如何顺序执行三个线程?例如。线程1、线程2、线程3。无法将一个线程的引用传递给另一个线程并从run()方法调用。所以代码应该是这样的:Thread1.start();Thread2.start();Thread3.start();输出应该是PrintingThread1PrintingThread2PrintingThread3这可以通过使用ThreadPoolExecutor和使用阻塞队列来实现,但即使这样也不是一个可接受的答案。 最佳答案 你可以使用Executors.newSingleThreadExecutor(),但严

java - ArrayMap 与 HashMap

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestionorg.apache.myfaces.trinidad.util.ArrayMap和java.util.HashMap的主要区别是什么?ArrayMap是线程安全的吗?在文档中提到Array在性能方面是最好的。我不想使用hashmap或

用于带有 GSM 调制解调器 rxtx 的 IVRS 的 Java 多线程(播放语音文件使事件监听器停止工作)

我已经实现了一个程序来使用gsm调制解调器接听电话。在检测到“RING”调用被应答时,通过从DATA_AVAILABLE事件处理程序内部调用函数来播放音频剪辑。但是事件处理程序在此之后停止工作。音频完成后,事件处理程序不再显示任何数据接收事件。为什么事件监听器停止工作。从事件处理程序内部播放音频是我做错了吗?我正在考虑从data_received事件处理程序内部设置一个变量true或false并创建自定义事件处理程序来监听对该变量的更改以播放音频,这两者是否可以同时工作?如何创建多线程解决方案,使串行I/O不被中断,并且音频播放和音频采样可以以同步方式完成以检测dtmf音调。有什么办法

java - 对象构造后读取字段陈旧值

我正在阅读BrianGoetz所著的“Java并发实践”一书。第3.5和3.5.1段包含我无法理解的语句。考虑以下代码:publicclassHolder{privateintvalue;publicHolder(intvalue){this.value=value;}publicvoidassertValue(){if(value!=value)thrownewAssertionError("Magic");}}classHolderContainer{//UnsafepublicationpublicHolderholder;publicvoidinit(){holder=newH

java - 计算矩阵行列式

我正在尝试计算矩阵(任意大小)的行列式,用于self编码/面试练习。我的第一次尝试是使用递归,这使我实现了以下实现:importjava.util.Scanner.*;publicclassDeterminant{doubleA[][];doublem[][];intN;intstart;intlast;publicDeterminant(doubleA[][],intN,intstart,intlast){this.A=A;this.N=N;this.start=start;this.last=last;}publicdouble[][]generateSubArray(double

java - 在仔细锁定但不受信任的代码上使用 Thread.stop()

我知道Thread.stop()已被弃用,并且有充分的理由:它通常不安全。但这并不意味着它从不安全……据我所知,它在我想要使用它的上下文中是安全的;而且,据我所知,我别无选择。上下文是双人策略游戏的第三方插件:国际象棋将作为工作示例。需要给第三方代码一个当前的棋盘状态,并且(比如说)10秒来决定它的移动。它可以返回它的移动并在允许的时间内终止,或者它可以随时发出其当前首选移动的信号;如果时间限制到期,它应该停止在它的轨道上,并且应该播放它最近的首选Action。编写插件以按要求正常停止不是一个选项:我需要能够使用任意不受信任的第三方插件。所以我必须有一些方法来强行终止它。这是我为锁定它

java - 与边缘同步的编译器是否在两个方向上重新排序障碍?

我有一个关于Java内存模型的问题。给定以下示例:action1action2synchronized(monitorObject){//acquireaction3}//releaseaction4acquire和release可以是任何同步边缘(锁定、解锁、启动线程、加入线程、检测线程中断、volatile-write、volatile-read、等等)是否保证action3在获取之前不能移动并且在释放之后不能移动?p>是否保证action2不能在获取之后(无论是在发布之前还是发布之后)和action4不能在发布之前移动(无论是在获取之前还是之后)?对于编译器的重新排序操作,与边同

java - awaitTermination 函数出现 IllegalMonitorStateException

我在Java中使用线程时遇到问题(我在Java中使用线程的经验很少,但在C++中使用很多,所以我了解线程的基本概念)。我已经在J​​ava中使用了线程的示例代码,接下来是代码:ExecutorServiceexecutor=Executors.newFixedThreadPool(machines.size());for(Machinem:machines){Runnableworker=newrestartMachine(m.dataformachine());executor.execute(worker);}executor.shutdown();try{executor.awa