我对线程非常陌生,我想让我的探路者在它单独的线程上运行。
对于少量的单元(当游戏打开时都需要一个路径),它可以工作一段时间,但之后我得到了一个NullPointerException和一个IllegalThreadStateException。
...
GoTo: New path for nr: 10. [9ms]
Item: item picked up by: nr: 2
Item: item picked up by: nr: 0
GoTo: New path for nr: 1. [10ms]
GoTo: New path for nr: 2. [2ms]
GoTo: New pa
我有一个游戏逻辑主要发生在游戏中。我只是根据我找到的文档添加了声音播放:
//////////////////////SOUND/////////////////////////
SourceDataLine soundLine = null;
int BUFFER_SIZE = 64*1024; // 64 KB
// Set up an audio input stream piped from the sound file.
try {
File soundFile = new File("tim ph3 samp
我正在学习Java中的线程编程,以便创建一些并行运行的程序。设计并行程序是我在学校编程课上从来没有机会学到的东西。我知道如何创建线程并让它们运行,但我不知道如何有效地使用它们。毕竟,我知道实际上不是使用线程使程序变得更快,而是一个很好的并行设计。所以我做了一些实验来测试我的知识。然而,我的平行版本的运行速度实际上比无与伦比的版本要慢。我开始怀疑我是否真的有了这个想法。如果你能这么好的话,你能看一下我的下列节目吗?
我编写了一个程序,以分而治之的方式填充数组(我知道Java有一个Arrays.fill实用程序,但我只想用多线程测试我的知识):
public class ParalledFill
是不使用队列的二叉树视图的c++实现。当我试图将它转换为Java时,它是不工作的。以下是我的Java代码:
(我认为这很可能是因为我没有正确理解算法和处理maxLevel指针/引用)
public static void rightView(TreeNode tNode){
int maxLevel = 0;
rViewUtil(tNode, 1,maxLevel);
}
public static void rViewUtil(TreeNode tNode, int level, int maxLevel){
if(tNode==null)
retu
我有一个使用ThreadPoolExecutor异步执行事物的程序。我在Java8中使用CompletableFutures来安排这些任务,然后让线程池中可用的线程执行它们。
我的代码如下所示:
public class ThreadTest {
public void print(String m) {
System.out.println(m);
}
public class One implements Callable<Integer> {
public Integer call() throws Excepti
我想要创建一个应用程序,其中有两个线程,一个线程读取char数据,另一个线程将它打印到控制台,我有下面的代码给interThreadCommunication (假设文件中有像s c k v e r f l o w这样的数据),我将生成输出如下:
From echo int 115 char value s
From echo int 116 char value t
From echo int 97 char value a
From echo int 99 char value c
From echo int 107 char value k
From echo int 111
我刚刚对我的代码运行了一个分析器,我注意到我花费了大量的时间使用ClientBuilder.newClient()创建新的客户机。这并不令人惊讶,因为文档指出,这是一个繁重的操作,如果可能的话,您应该重用客户机。
所以我创建了一个简单的资源库来管理我所有的客户
public class SimpleClientResourcePool implements ResourcePool<Client> {
private LinkedList<Client> pool = new LinkedList<>();
@Override
pu
可能重复:
我的应用程序中有史诗般的内存泄漏。我用一种方法在本地concurrentBag集合中添加的所有数据都从未被收集过。
这个简单的代码演示了我如何使用它:
void Main()
{
var l = new List<int>(){1,2,3,4};
Func(l);
l.Clear();
l=null;
}
void Func(List<int> list)
{
var bag = new ConcurrentBag<int>();
Parallel.ForEach(list, k=>
我正在研究addAndGet类中AtomicInteger方法的Java(Java6)源代码。
相应的守则如下:
public final int addAndGet(int delta) {
for (;;) {
int current = get();
int next = current + delta;
if (compareAndSet(current, next))
return next;
}
}
compareAndSet方法调用本机方法来执行赋值。主要有两个问题:
无限循环有什么帮助呢
我有一个类似于这样的Java代码块,我正在尝试并行化:
value = map.get(key);
if (value == null) {
value = new Value();
map.put(key,value);
}
value.update();
在调用value.update()之前,我希望阻止任何其他线程使用该特定密钥访问映射,即使密钥不在密匙集中。应该允许使用其他密钥进行访问。我怎样才能做到这一点?
我有一个java程序,它将客户端连接到服务器。这包括在客户端通过发送消息触发服务器后创建一个文件目录。例如:一旦服务器已经运行,客户端将连接并发送一个msg,即“您的消息: Lady",在此之后,服务器将收到一条类似于”请求创建一个名为: Lady的目录“的消息。
但问题是这种联系只适用于一对一。就像只有一个客户端可以连接到服务器.
这是示例代码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package today._;
im
假设一个Win32FileSystem和beginMultiThreading在共享的MultiThreadingClass对象上同时运行很多次,那么最有可能导致数据争用或其他线程问题的方法是什么?我知道这可能不是线程安全,因为(1) setPath的参数被重用了。我还看到,(2) path不是java.io.File中的最终变量。但是,由于线程问题,我似乎找不到这段代码本身可能出错的部分。
public class MultiThreadingClass {
private Holder h = new Holder();
private String path ="