Tag: multithreading

Android线程池管理多个蓝牙handeling线程?

所以我有我的Android蓝牙应用程序,它有主机和客户端。 问题是,因为我正在进行多个连接,所以我需要一个线程来处理每个连接。 这都是milk’n’cookies,所以我想我会把所有线程都放在一个数组中。 一个小小的研究表明,更好的方法是使用线程池,但我似乎无法理解其工作原理。 此外,它实际上甚至可以在一个数组中保存线程吗?

Javamultithreading似乎没有正确工作

我有一个处理某事的课程。 我试图并行运行这个类的一些实例。 但是,我不确定在调用r.go()时是否在TaskManager.startAll() ,是否会导致r开始在自己的线程中运行,或者在主线程内运行? 我得到的总执行时间似乎非常高,尽管我尝试优化,但似乎没有任何效果。 此外,如果我在Netbeans中的项目上运行一个分析器,它会显示所有线程都处于hibernate状态。 所以我想知道我做错了什么? 这是class级的结构: public class TaskRunner implements Runnable { private boolean isRunning = false; public void run() { while(true) { while (! running) { try { Thread.sleep(1); } catch (Exception e) { e.printStackTrace(); } } process(); } } public void go() { isRunning = true; } public void stop() { […]

从同一个表读取的两个线程:如何使两个线程不从TASKS表中读取同一组数据

我有一个任务线程在两个单独的tomcat实例中运行。 Task线程在某些where条件下同时读取(使用select)TASKS表,然后进行一些处理。 问题是,有时两个线程都选择相同的任务,因此任务执行两次。 我的问题是如何使两个线程不从TASKS表中读取相同的数据集

Spring Framework上的multithreading(或异步)计算

我正在学习Spring Framework,它非常棒。 我想使用JAVAmultithreading,但我不知道如何使用Spring Framework。 这是服务代码: //StudentService.java public List loadGradesForAllStudents(Date date) { try{ List grades = new ArrayList(); List students = loadCurrentStudents(); // LOAD FROM THE DB for(Student student : students) { // I WANT TO USE MULTITHREAD FOR THIS PART // LOAD FROM DB (MANY JOINS) History studentHistory = loadStudentHistory(student.getStudentId(), date); // CALCULATION PART Grade […]

Java线程不会在I / O操作上暂停

我的印象是,在Java中,线程会暂停并让其他线程有机会在阻塞I / O操作(如Socket.read()或DataGramsocket.receive())期间做一些工作。 出于某些原因,在我的multithreading网络应用程序中,对receive()的调用导致我所有其他线程都饿死(调用receive()的线程正在成为一个大老板,永远不会放弃控制,从而永远阻止!) 为什么会这样? 我曾经拥有相同的应用程序,但它不是UDP而是基于TCP。 Socket.read()总是暂停线程并允许其他人工作一段时间,如果它被阻塞太久了。 – 额外信息 – 我的自定义线程的TCP版本是这个代码: http : //www.dwgold.com/code/proxy/proxyThread.java.txt 我的新代码(UDP版本)几乎相同,但修改了一点使用UDP方法和样式。 然后我创建了其中两个线程,并在两个线程上调用start。 第一个线程总是阻塞,永远不会让另一个在UDP版本中工作。

Java – 中断线程?

我有一个关于在Java中断线程的问题。 说我有一个Runnable : public MyRunnable implements Runnable { public void run() { operationOne(); operationTwo(); operationThree(); } } 我想实现这样的事情: Thread t = new Thread(new MyRunnable()); t.run(); … // something happens // we now want to stop Thread t t.interrupt(); // MyRunnable receives an InterruptedException, right? … // t is has now been terminated. 我怎样才能在Java中实现它? 具体来说,我如何捕获MyRunnable的InterruptedException ?

java同步和exception处理

如果我有一个synchronized块并且在该块内的某个地方抛出了一个未在synchronized块中捕获的exception,那么当exception传播出来时是否会放弃锁定?(synchronized块) synchronized( mutex ) { throw new Exception( “” ); }

当两个线程试图在并发hashmap中放入相同的键值时会发生什么

想象一下,有两个线程A,B将分别在地图中放置两个不同的值,即v1和v2,具有相同的密钥。 密钥最初不存在于映射中线程A调用containsKey并发现密钥不存在,但是立即挂起线程B调用containsKey并发现密钥不存在,并且有时间插入其值v2 当线程A回来时,会发生什么? 我假设,它调用put方法,它反过来调用putIfAbsent但是密钥已经在线程中插入B.so线程A不会覆盖该值 但是从这个链接我发现线程A恢复并插入v1,“和平”覆盖(因为put是线程安全的)线程B插入的值是ConcurrentHashMap完全安全吗?

监视器锁的最低字节使用值是多少?

要在Java中使用内部锁定 Object o = new Object() … sychronized (o) { … } 因此,一个监视器已经需要一个对象,即64位的8字节或16字节 (对于压缩的操作和64位,需要12个字节)。 现在假设您要使用大量这些监视器,例如,对于可以在某些区域进行同步并且具有比Collections.synchronizedList更好的并发性(基于条目)的arrays 。 那么实现这个的最有效方法是什么? 我可以以某种方式使用2个嵌套锁4个条目或3个8个等? 或者我可以使用“每个线程一个锁”,例如在ConcurrentHashMap ?

我可以在Android上的多个线程中使用相同的RoomDatabase对象吗?

我在Android上使用Room persistence库。 目前,每次访问数据库时都会有一些额外的同步代码。 我想知道这段代码是否必要。 我目前以单身人士的身份访问数据库。 这就是我当前将对象插入数据库的方式: // Insert values into DB final AppDatabase db = AppDatabase.get(this); AsyncTask.execute(new Runnable() { @Override public void run() { synchronized (db) { for (WorkOrder wo : workOrderList) { db.workOrderDao().insertAll(wo); } } } }); 我是否需要在同步块中插入代码?