在 Java 中,我有一个具有许多 SQLite CRUD 函数的类,它们都属于同一个类 SQLiteCrudHelper
。
让所有这些函数在 UI 线程之外运行的唯一方法是为每个 CRUD 函数编写一个包装函数,启动一个新线程,运行 CRUD 函数,然后返回一个回调,以便您可以实现完成后会发生什么?
或者有没有办法制作一个通用的线程/回调函数,它将接受您提供的任何函数并以这种方式对待它?
最佳答案
问题是:java 没有一种方法可以让您使用任何函数。
因此,在 java 8 之前,您通常会传递 Runnable 的某个实例或使用 ExecutorService 传递 Callables .
使用Java8,您可以查看functional interfaces与 method references 一起.
长话短说。您可以只创建采用一些“void*”指针的代码,就像 C 的好坏日子一样;但您有多种选择来实现这一目标。
最后:我的“个人”选择是研究 ExecutorServices,而不是使用“裸机线程”(或线程池);因为这些可以轻松地替换为 "same thread executor service"这使得将多线程代码转回“单线程”以进行单元测试变得非常容易。
关于java - 为类的任何函数编写可线程包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39070950/