Tag: multithreading

处理程序消息数据被下一条消息覆盖的Java线程问题

我有一个线程从蓝牙流中读取数据,该数据将数据发送到主UIThread上的处理程序(基于蓝牙聊天示例 )。 我发现了一个经常弹出的线程问题。 首先,一些代码供参考。 BluetoothService.java (只是读取incomming数据流的部分。在此代码运行之前已正确设置)。 public void run() { DebugLog.i(“BluetoothService”, “BEGIN mConnectedThread”); byte[] buffer = new byte[1024]; int bytes; // Keep listening to the InputStream while connected while (true) { try { // Read from the InputStream bytes = mmInStream.read(buffer); DebugLog.d(“BluetoothService”, new String(buffer, 0, bytes)); // Send the obtained bytes to the UI Activity […]

如何在类中顺序执行两个线程

我正在研究java中的线程编程,我遇到了一个问题,我必须一个接一个地执行2个线程。 下面是简要抽象我的问题的代码片段。 class A{ //default execute method of this class String a=”thread1″; String b=”thread2″; public void execute(){ if(a==”thread1″){ CreateThread1 t1 = new CreateThread1(this); t1.call(); } else if(b==”thread2″) { CreateThread1 t2 = new CreateThread1(this); t2.call(); } }//end of execute public void UpdateUI(){ try{ Display.getDefault.asyncExec(new Runnable(){ public void run(){ //ui update code here } }); } catch(SWTException […]

游戏循环 – 线程

如果java程序中的游戏循环总是在事件派发线程中运行吗? 因为我的keylisteners在AWT事件线程中运行,我希望在与游戏其余部分相同的线程中处理关键事件,以避免基于线程的错误。 如果我不在事件线程中运行游戏循环,我可以使用ArrayBlockingQueue将事件从事件处理程序发送到游戏循环吗? 有更好的解决方案吗? 谢谢 也许是这样的? ConcurrentLinkedQueue eventQueue = new ConcurrentLinkedQueue(); JFrame frame = new JFrame() { @override protected void processEvent(AWTEvent e) { if(e instanceof InputEvent) eventQueue.add(e); else super.processEvent(e); } } //game loop while(true) { while(!eventQueue.isEmpty()) frame.super.processEvent(eventQueue.poll()); … } 编辑:谢谢,我想我现在知道怎么做了。 我会这样做的 import java.util.concurrent.ConcurrentLinkedQueue; import java.awt.AWTEvent; import java.awt.Dimension; import java.awt.event.*; import javax.swing.*; public class QueueTest { […]

如何让应用程序主线程进入睡眠状态?

我有一个当前的问题:我有一个应用程序,并希望让主线程hibernate1500毫秒显示我可以显示ProgressDialog,我不知道该怎么做。 可以停止应用程序主线程吗? 我可以使用另一个线程实现相同的目标吗?

如何使用dropbox java api同时上传多个文件

我想知道如何使用java dropbox api将多个文件上传到dropbox。 我想知道这是当前的,当我想上传文件夹时,我递归浏览文件夹中的每个文件并逐个上传。 但是,我发现这太慢了。 所以,我认为我可以一次上传文件夹中的所有文件。 但是,我该怎么做? 我应该创建n个线程,每个线程上传一个文件或什么?

有没有办法在java应用程序中完全禁用RMI?

在我们的应用程序中,远程过程调用是通过自己的基于netty的命令调度程序系统解决的。 我们有很多模块(大约20个),我想在单独的jvm-s中运行所有模块。 我的问题是,RMI为每个JVM产生大约17个线程。 我根本不需要RMI(据我所知)。 我可以完全禁用jvm的RMI吗? 或者至少以不使用这么multithreading的方式配置它?

使用java的multithreading概念控制运行Thread

我只想在按下返回键时启动并停止线程。 这里线程停止正常,但我不能再次启动该线程请帮助。 还解释了我使用volatile关键字。这对我来说是有帮助的。 public class Sync extends Thread{ public boolean meth= true; public void run(){ while(meth){ System.out.println(“hello”); try { Thread.sleep(1000); } catch (InterruptedException ex) { } } } public void shutdown(){ meth=false; } public void startup(){ meth=true; } } 主类“ package com.Sync; import java.util.Scanner; public class SyncMain { public static void main(String[] arg) throws InterruptedException{ […]

在canvas上绘制路径作为动画

我不得不再问一次,因为之前没有人回答我的问题(我的问题不是如何在带有动画的Androidcanvas上绘制路径? )。 请仔细阅读并尽可能通过提供代码帮助我。 我不清楚这个简单的例子,并且在绘图流程中创建了Path。 这不是我要找的…… 我想通过绘制时间间隔的点来绘制已存在于我的View类中的ONE Path,以模拟动画。 我应该如何修改我的onDraw类来存档它? public void onDraw(Canvas canvas) { paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(6); paint.setColor(Color.parseColor(“#10BCC9”)); if(path != null && !path.isEmpty()) canvas.drawPath(path, paint); } 我认为这是一个简单的问题,我不相信没有简单的答案……请帮助……

如果在Thread上调用java wait(),则该方法也会在run()方法终止时退出

我对wait()方法的特定用例感到困惑。 根据javadoc,当发生以下某种情况时,等待应该结束: 另一个线程调用notify或notifyAll(好的,请参阅javadoc以获取有关通知的详细信息,但这与此问题无关) 另一个线程中断这个(等待)线程 超时到期(如果使用带超时的等待版本) 在我正在等待的对象本身就是一个线程的情况下,即使没有调用notify(),并且上述条件中没有一个成立,也会发生wait()退出。 但是当Thread.run()方法结束时会发生这种情况。 虽然这种行为可能有意义,但不应该在Thread javadoc中记录吗? 我发现它也很混乱,因为它与join()行为重叠。 这是我的测试代码: public static class WorkerThread extends Thread { @Override public void run() { try{ System.out.println(“WT: waiting 4 seconds”); Thread.sleep(4000); synchronized (this) { notify(); } System.out.println(“WT: waiting for 4 seconds again”); Thread.sleep(4000); System.out.println(“WT: exiting”); } catch (InterruptedException ignore) { ignore.printStackTrace(); } } } public static void […]

使用java execute shell命令

这个类是响应执行命令,打印结果 public class ExecutorTask implements Runnable{ @Override public void run() { Process process = null; try { process = Runtime.getRuntime().exec(“cmd /c dir”); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line=””; while ((line = reader.readLine()) != null) { System.out.println(line); } process.waitFor(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { return; } } } […]