将数据传递给Runnable的最佳方法是什么?

时间:2015-05-02 21:52:03

标签: java android multithreading runnable

我通常会编写大部分代码,而不必担心线程等问题,并在尝试将片段卸载到其他线程之前使其工作和调试。对我来说,最简单的方法是将函数分解为Runnable或者两个。从那里我可以通过新的Thread(runnable).start()以及我在主线程上通过handler.post()开始的其他部分开始一个片段。

问题在于我无法传递参数。我有时可以解决这个问题,但我经常使用非局部变量,这使得事情变得非常混乱。关于"正确"的任何想法将参数传递给runnable的方法?

2 个答案:

答案 0 :(得分:1)

我通常创建一个实现Runnable的新类,并将参数作为构造函数参数传递并将它们存储在最终字段中。

如果我需要从计算中得到结果,我实现Callable

我也在使用执行程序而不是线程。

答案 1 :(得分:0)

绝对是一个公共同步队列。

创建一个全局数据队列,按顺序处理,然后使用该队列访问外部变量/数据。创建一个方法将数据添加到队列,然后创建一个方法来获取最后一个元素并将其移位。

这可以确保数据从外部线程(例如主程序线程)传递到您的线程,而不会中断程序流。

可以在需要传递数据时通过添加值来处理队列,并且可以调用get last元素方法来获取传递给线程的最后一个日期元素。