Tag: multithreading

工作线程导致Lucene LockObtainFailedException

因此,我一直在尝试将Lucene用于App-Engine,作为GAE Search Api的优秀替代品。 我的内容是用户生成的; 这意味着我将在生产时动态地向索引添加内容。 因此,我将文档添加到索引的实现使用了一个任务队列,这样我的系统可以毫无问题地扩展。 但我遇到一个问题,多个工作线程试图访问索引导致LockObtainFailedException。 我有什么想法可以解决这个问题? 上面链接的LuceneFoAppEngine项目确实包含引号 对于高性能应用程序,请使用Google App引擎任务队列 那么在避免LockObtainFailedException的同时我该如何做呢? 我唯一希望创建多个索引,然后在搜索时,搜索所有索引? (每个工作线程的一个专用索引?)

套接字 – 软件导致连接中止:recv失败

我正在尝试构建一个简单的TCPmultithreading客户端/服务器应用程序。 每当客户端( Socket )连接到ServerSocket并发送对应于下面所示的简单可序列化类的Object ( Message )时,服务器在其ObjectInputStream尝试从客户端Socket读取SocketExpection时崩溃。 Message.java package storageserver; import java.io.Serializable; public class Message implements Serializable { private static final long serialVersionUID = 27015L; public int ClientStatus; // 0 – NotLogged ::: 1 – Logged public String Command; public String[] Commands; public Message() { this.ClientStatus = 0; this.Command = null; this.Commands = null; } […]

Java:从Runnable返回结果

假设以下简化示例。 设B表示处理某些栅格数据的类: import java.awt.image.BufferedImage; public class B implements Runnable{ private boolean c; private Runnable f; public B (boolean c_, Runnable f_) { c = c_; f = f_;} public BufferedImage process() { //Some operations BufferedImage output = null; if (c) output = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); return output; } public void run() { process();} } […]

弹簧和multithreading

我需要启动一个可变数量的线程,这些线程又会在spring应用程序中启动不同数量的线程(即I线程需要启动Ki线程的线程)。 假设每个“I线程”包含一个自动assembly的内部类,我将如何生成这些实例? 所以我有一个A bean需要以某种方式生成I需要进行Spring管理以满足其依赖关系的bean实例。 我写了一个简短的示例代码,我认为是我的解决方案的基础,我已经标记了代码,我不知道如何编写???: @Component public class MasterOrchestrator { public void do(List list){ ExecutorService es = Executors.newFixedThreadPool(list.size()); for (DataObjWrapper dataObjWrapper : list){ es.submit(???); } } } @Component public class ThreadWorkerI implements Runnable{ private int numThreadsForMessageType; private int numRunsForMessageType; private DataObj dataObj; public ThreadWorkerI(int numThreadsForMessageType, int numRunsForMessageType, DataObj dataObj){ this.numThreadsForMessageType = numThreadsForMessageType; this.numRunsForMessageType = numRunsForMessageType; […]

记录线程内存泄漏

我为我的程序编写了一个后台日志记录线程,如果一个类需要一个记录器,它会从我的线程池中提取它,所以对于每个文件名,只有一个日志在运行。 该类添加了需要通过log(String)记录的任何内容。 无论如何,每当我设置登录并且它运行writetolog()一段时间后我得到heapoutofmemoryexception。 这是由日志线程引起的,但是我无法看到内存泄漏的位置,而且我在线程方面也不是很好。 我唯一的想法是,它是在缓冲的作家? import java.io.File; import java.io.IOException; import java.io.FileWriter; import java.util.Calendar; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; public class Log extends Thread{ private String file; private BlockingQueue pq = new LinkedBlockingQueue(); private BufferedWriter bw; private boolean Writing; @Depreciated public Log(){ super(); file = “log.txt”; start(); } public Log(ThreadGroup tg, String fileName){ super(tg,fileName); file = fileName; […]

如何在Android中暂停Thread的消息队列?

我通过Handler.post()将一堆runnable排队到一个线程中。 我希望能够向该线程发送一条应该暂停的注释。 暂停我的意思是,完成您当前正在处理的runnable或消息,但是在我告诉您继续之前,不要转到下一条消息或在消息队列中运行。

如何在java中调用Method作为后台进程

在我的应用程序中,当用户登录时,我有这个逻辑,它将使用用户拥有的所有符号调用下面的方法。 public void sendSymbol(String commaDelimitedSymbols) { try { // further logic } catch (Throwable t) { } } 我的问题是,由于这个发送符号的任务可以缓慢完成但必须完成,所以无论如何我可以将其作为后台任务吗? 这可能吗 ?? 请分享您的观点。

如何在java中实现类级别锁定?

我知道锁定概念与静态和非静态方法同步分别锁定类和实例。 我无法理解的是,如何实现class级锁定? 我的意思是,课程只是一个模板,没有任何物理意义。 那么,当我们说通过同步静态方法实现类级别锁定时会发生什么呢? 该类的所有对象是否被锁定或其他进程? 我可以通过搜索找到的是有类对象(Class.class)并且在此类对象上获取了锁。 但那个class级的所有实例也是如何锁定的呢?

主线程优先级的值是多少?

所有线程都有自己的优先级,那么主线程的整数值是多少?

试图让守卫的街区工作

我不明白为什么我的代码工作不正常。 我希望第一个Thread等待4秒,第二个Thread将共享布尔“joy”设置为true,然后第一个Thread打印出“Joy已经实现!”。 当我运行代码时,我得到这个输出: “没有喜悦……” “通知喜悦” 然后它冻结并且不会继续。 如果我的理解是正确的,从我的notifyJoy()方法调用的notifyAll()方法应该从它的wait()唤醒t1然后,因为共享的静态布尔变量joy现在是真的,“Joy已经实现!” 应该打印到控制台。 我正在使用Oracle的“The Java Tutorial”,第13章:这里是特定部分的链接: Java Tutorial Website 。 我会离开他们所拥有的并做一些例子,但我似乎无法弄清楚我做错了什么。 任何帮助,将不胜感激。 以下是我的代码的完整副本供您参考: public class JoyTime { public static void main(String[] args) { JoyRider j1 = new JoyRider(false); JoyRider j2 = new JoyRider(true); Thread t1 = new Thread(j1, “J1”); Thread t2 = new Thread(j2, “J2”); t1.start(); try { Thread.sleep(4000); } […]