【发布时间】:2018-12-22 01:51:47
【问题描述】:
我需要同步两个线程,这样两个线程就不能同时运行。一旦被调用,它们就需要运行,所以如果另一个线程正在运行,它们需要等到另一个线程完成然后在它之后运行。我知道我可以使用 join() 但我的问题涉及不同类中的线程,彼此之间没有引用。将线程设为静态类变量以便它们可以相互访问是个好主意吗?
一个线程 (t1) 从 Main Activity 中的方法调用,另一个线程 (t2) 在 AsyncTask 内:
public class MainActivity extends AppCompatActivity
{
public void someMethod()
{
// code
Thread t1 = new Thread(() ->
{
// run thread code
});
t.start();
try
{
t.join();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
// someMethod follow-up code
}
}
public class FetchData extends AsyncTask<Void, Void, Void>
{
protected final Void doInBackground(Void... params)
{
// code
Thread t2 = new Thread(() ->
{
// run thread code
});
t.start();
try
{
t.join();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
// follow-up code
}
}
}
【问题讨论】:
-
如果你觉得需要同步两个线程,你可能需要重新思考你的应用的逻辑。
-
大声笑在多线程img中没有同步线程是必不可少的
标签: java android multithreading android-asynctask