我现在正在学习多线程概念。我可以在handler和Runnable()的帮助下运行单个线程。我希望我的代码运行两个线程,比如说Thread1运行method1(),而thread2运行method2()。 Thread1应该运行2秒然后休眠1秒。同时,thread2应该被唤醒并运行1秒。同样,thread1应该运行2秒。这个过程应该不断进行。我在Android中这样做。
问题可能看起来很直接,但除了在这里发布问题之外我别无他法,因为我在本网站上经历过许多教程和问题。没有帖子适合我的背景。任何建议将不胜感激。提前谢谢。
答案 0 :(得分:2)
<强>示例强>
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//your code
}
});
}
}, 2000, 1000); // 2000 is delay and 1000 is call period
您还可以使用另一种schedule()方法来映射您的条件。
答案 1 :(得分:2)
您可以使用ScheduledThreadPoolExecutor
执行此操作,您可以使用//creates a thread pool of size 2
int poolSize = 2;
// creates ScheduledThreadPoolExecutor object with number of thread 2
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(poolSize);
//starts executing after 1 second
ScheduledFuture<Callable-Type> sf = stpe.schedule(new TaskOne(), 1,TimeUnit.SECONDS);
//starts executing after 2 seconds
ScheduledFuture<Callable-Type> sf1 = stpe.schedule(new TaskTwo(), 2,TimeUnit.SECONDS);
来并行执行任务。一个用于安排任务的小样本示例:
class TaskOne implements Callable<Callable-Type> {
@Override
public Callable-Type call() throws Exception {
//DO YOUR WORK HERE
return callable-type;
}
}
class TaskTwo implements Callable<Callable-Type> {
@Override
public Callable-Type call() throws Exception {
//DO YOUR WORK HERE
return callable-type;
}
}
您可以按如下方式定义任务:
ScheduledThreadPoolExecutor
使用Timer
优于{{1}}的优点是:
参考:实践中的Java并发
答案 2 :(得分:0)
你使用了以下两种机械装置。
Wait and Notify methods