将数据传递给 Runnable 的最佳方式是什么?
What is the best way to pass data to a Runnable?
我通常在编写大部分代码时都不用担心线程等问题,并在尝试将代码块卸载到其他线程之前先使其正常工作和调试。对我来说,最简单的方法是将函数分解为一个或两个 Runnable。从那里我可以通过 new Thread(runnable).start() 开始一个片段,我可以通过 handler.post().
在主线程上开始其他片段
问题是我无法传递参数。有时我可以解决这个问题,但我常常最终使用非局部变量,这让事情变得一团糟。关于将参数传递给可运行对象的 "correct" 方法有什么想法吗?
我通常创建一个新的 class 实现 Runnable
并将参数作为构造函数参数传递并将它们存储在最终字段中。
如果我需要从计算中返回结果,我会改为实现 Callable
。
我也在使用执行器而不是直接使用线程。
肯定是public同步队列。
按顺序创建要处理的全局数据队列,然后使用该队列访问外部variables/data。创建一个方法将数据添加到队列,然后创建一个方法来获取最后一个元素并将其移动。
这确保数据从外部线程(例如主程序线程)传输到您的线程,而不会中断程序流。
当需要传递数据时可以对队列进行加值处理,调用get last element方法获取传递给线程的最后一个日期元素
我通常在编写大部分代码时都不用担心线程等问题,并在尝试将代码块卸载到其他线程之前先使其正常工作和调试。对我来说,最简单的方法是将函数分解为一个或两个 Runnable。从那里我可以通过 new Thread(runnable).start() 开始一个片段,我可以通过 handler.post().
在主线程上开始其他片段问题是我无法传递参数。有时我可以解决这个问题,但我常常最终使用非局部变量,这让事情变得一团糟。关于将参数传递给可运行对象的 "correct" 方法有什么想法吗?
我通常创建一个新的 class 实现 Runnable
并将参数作为构造函数参数传递并将它们存储在最终字段中。
如果我需要从计算中返回结果,我会改为实现 Callable
。
我也在使用执行器而不是直接使用线程。
肯定是public同步队列。
按顺序创建要处理的全局数据队列,然后使用该队列访问外部variables/data。创建一个方法将数据添加到队列,然后创建一个方法来获取最后一个元素并将其移动。
这确保数据从外部线程(例如主程序线程)传输到您的线程,而不会中断程序流。
当需要传递数据时可以对队列进行加值处理,调用get last element方法获取传递给线程的最后一个日期元素