我被阻止了 - 有人可以建议我如何正确地将TreeMap(或类似集合)参数传递给线程。使用命名类,我可以传递一个String参数没问题,但经过多次实验后,TreeMap无法工作 - 它总是没有长度。显然,String与TreeMap非常不同,但仍然应该有一些方法可以使它工作。
该程序是一个后台服务,可以从各种传感器获取数据 - 我需要在单独的线程上进行一些数据处理,保存到SD卡等。 我已经阅读过很多帖子,例如Runnable with a parameter?和各种重复的帖子,但没有找到任何解决方案。
// String version works fine
public class MyThread implements Runnable {
private String s;
public MyThread(String s) {
this.s = s;
}
public void run() {
// works great, can process s data, save to sd card, etc.
}
}
//called by
String s = "mylongcsvstring";
Runnable r = new MyThread(s);
new Thread(r).start();
//TreeMap version doesn't work
public class MyThread implements Runnable {
private TreeMap<Long, SomeObject> t;
public MyThread(TreeMap<Long, SomeObject> t) {
this.t = t;
}
public void run() {
// need to process t but size is zero
}
}
//called by
TreeMap<Long, SomeObject> tm = new TreeMap<>();
tm.put(Long,SomeObject); // up to a few hundred objects
Runnable r = new MyThread(tm);
new Thread(r).start();