线程间通讯的问题
现在需要封装一个类来处理底层数据,类中开启一个线程来持续采集数据,待数据满足某种条件(比如数据长度等)时通过Listener来通知调用者,但是调用者在响应时如果涉及到UI则会报错,应如何解决?
类代码:
Activity代码
类代码:
public class MyClass {
private MyThread mThread = null;
private boolean isRunning = false;
private OnChangeListener listener = null;
private boolean flag = false;
private class MyThread extends Thread {
@Override
public void run() {
super.run();
while (isRunning && !isInterrupted()) {
if (flag) {
listener.onChanged();
flag = false;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
break;
}
}
}
}
public interface OnChangeListener {
public void onChanged();
}
public void setMyListender(OnChangeListener l) {
listener = l;
}
public void start() {
if (null == mThread) {
mThread = new MyThread();
isRunning = true;
mThread.start();
}
}
public void flag() {
flag = true;
}
}
Activity代码
public class MainActivity extends Activity {
private MyClass mc = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mc = new MyClass();
mc.setMyListender(new MyClass.OnChangeListener() {
@Override
public void onChanged() {
//这里如果涉及到UI相关的操作则报错
}
});
mc.start();
}
...全文
相关推荐
36.线程间的通信-wait与notify-不使用wait与notifty实现线程间通讯有什么问题.mp4
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
c++ 多线程编程之三----线程间通讯
在实现线程间通讯时,我们需要考虑线程安全问题,使用互斥锁、信号量等机制来实现线程间通讯的安全性。
多线程编程之三——线程间通讯
但是,仅依靠`volatile`并不能完全解决线程安全问题,因为它不提供原子性操作。### 知识点四:示例代码分析代码片段展示了如何在Windows环境下实现线程间通讯。
xiancheng.zip_线程间通讯
下面我们将围绕标题“线程间通讯”和描述“通过代码实现线程间通讯,实现等待、唤醒等机制”来深入讲解相关知识点。1.
JAVA100例之实例64 JAVA线程间通讯
在"JAVA100例之实例64 JAVA线程间通讯"这个主题中,我们将深入探讨Java中实现线程间通信的几种主要方法。1. **共享数据**:最直观的线程间通信方式是通过共享内存空间,即共享变量。


