java - 为类的任何函数编写可线程包装器?

标签 java android multithreading sqlite

在 Java 中,我有一个具有许多 SQLite CRUD 函数的类,它们都属于同一个类 SQLiteCrudHelper

让所有这些函数在 UI 线程之外运行的唯一方法是为每个 CRUD 函数编写一个包装函数,启动一个新线程,运行 CRUD 函数,然后返回一个回调,以便您可以实现完成后会发生什么?

或者有没有办法制作一个通用的线程/回调函数,它将接受您提供的任何函数并以这种方式对待它?

最佳答案

问题是:java 没有一种方法可以让您使用任何函数。

因此,在 java 8 之前,您通常会传递 Runnable 的某个实例或使用 ExecutorService 传递 Callables .

使用Java8,您可以查看functional interfacesmethod references 一起.

长话短说。您可以只创建采用一些“void*”指针的代码,就像 C 的好坏日子一样;但您有多种选择来实现这一目标。

最后:我的“个人”选择是研究 ExecutorServices,而不是使用“裸机线程”(或线程池);因为这些可以轻松地替换为 "same thread executor service"这使得将多线程代码转回“单线程”以进行单元测试变得非常容易。

关于java - 为类的任何函数编写可线程包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39070950/

相关文章:

java - 无法安装Android SDK

c++ - 具有独立主机环境的线程 (c++)

Java 点,getX() 和 point.x 之间的区别

java - 后台蓝牙通信。线程、服务、IntentService、AsyncTask..?

android - 重命名后旧的Android应用程序名称不会消失

android - 在不扩展 PreferenceActivity 的情况下加载 preferences.xml

java - JAXB 和同步

java - 跳过 66 帧!应用程序可能在其主线程上做了太多工作

java - 允许 Java 应用程序用户导入要在程序中显示的图像

Java 桌面应用程序 : SWT vs. Swing