管道流Pipes
“管道”是java.io包的一部分,它是Java的特性,而不是Android特有的。一条“管道”为两个线程建立一个单向的通道。生产者负责写数据,消费者负责读取数据。
public class PipeExampleActivity extends Activity {
private static final String TAG = "PipeExampleActivity";
private EditText editText;
PipedReader r;
PipedWriter w;
private Thread workerThread;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
r = new PipedReader();
w = new PipedWriter();
try {
w.connect(r);
} catch (IOException e) {
e.printStackTrace();
}
setContentView(R.layout.activity_pipe);
editText = (EditText) findViewById(R.id.edit_text);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
try {
if(count > before) {
w.write(charSequence.subSequence(before, count).toString());
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void afterTextChanged(Editable editab

本文介绍了Java并发编程中线程间通信的两种常见方式:管道流Pipes和共享内存。管道流允许生产者线程通过管道向消费者线程传递数据,例如在EditText变化时更新工作线程。而共享内存则涉及多个线程对同一变量的访问,需要注意同步和原子操作。此外,还提到了使用Handler和Message进行线程间通信的方法。
最低0.47元/天 解锁文章
5万+





