android 两个线程操作一个列表代码
时间: 2023-12-03 18:45:41 浏览: 74
Android Thread学习笔记
下面是一个示例代码,演示了如何在Android中使用两个线程来操作同一个列表:
```
public class MainActivity extends AppCompatActivity {
private List<String> list;
private ArrayAdapter<String> adapter;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化列表和适配器
list = new ArrayList<>();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
ListView listView = findViewById(R.id.list_view);
listView.setAdapter(adapter);
// 创建Handler对象
handler = new Handler();
// 创建并启动第一个线程
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
// 向列表中添加数据
list.add("Item 1");
list.add("Item 2");
// 发送消息给UI线程,通知它更新列表
handler.post(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});
}
});
thread1.start();
// 创建并启动第二个线程
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
// 休眠2秒钟
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 向列表中添加数据
list.add("Item 3");
list.add("Item 4");
// 发送消息给UI线程,通知它更新列表
handler.post(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});
}
});
thread2.start();
}
}
```
在上面的代码中,我们创建了一个列表和一个适配器,并将适配器设置为列表的适配器。然后我们创建了一个Handler对象,用于在后台线程中向UI线程发送消息。接下来,我们创建了两个线程来操作列表。第一个线程向列表中添加两个项目,然后发送消息给UI线程,通知它更新列表。第二个线程休眠2秒钟,然后向列表中添加两个项目,并发送消息给UI线程,通知它更新列表。最终,我们启动了这两个线程,并在UI线程中等待它们完成它们的工作。
阅读全文