【发布时间】:2015-09-15 12:32:47
【问题描述】:
我有一个返回结果的方法(返回一个整数),我的方法在线程中执行以加载 40 000 个对象,我返回一个整数来计算加载的对象数。我的问题是,如何用 Thread 返回 int ?其实是直接返回结果,等于0。
public int ajouter(params) throws DaoException, ConnectException {
final ProgressDialog dialog = ProgressDialog.show(mActivity, "Title",
"Message", true);
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
dialog.dismiss();
}
};
Thread t = new Thread() {
public void run() {
try {
Str_Requete = "SELECT * FROM Mytable";
ResultSet result = ExecuteQuery(Str_Base, Str_Requete);
Index = addObjects(result);
handler.sendEmptyMessage(0);
} catch (SQLException e) {
e.printStackTrace();
}
}
};
t.start();
return Index;
}
当我在 mainActivity 中调用我的方法时:
int test = myObjs.ajouter(params);
test等于0,直接返回值... 我的约束是没有使用 AsyncTask。
【问题讨论】:
-
制作一个静态计数器并在你的线程
run方法中更新它并返回它。 -
看在上帝的份上,请遵循 Android 命名约定。
-
Rustam,我认为使用静态变量来容纳在另一个线程上完成的计算结果是一个可怕的建议。它不是线程安全的,您将无法并行运行多个不同的作业,并且调用代码无法知道何时计算完成。这不是静态变量的用途。
标签: java android multithreading