java多线程一半执行一个任务,另一半执行另一个任务
时间: 2023-07-13 09:23:51 浏览: 47
在Java中,可以通过创建多个线程来实现一半执行一个任务,另一半执行另一个任务的效果。下面提供两种实现方式:
1. 使用Thread和Runnable
可以创建两个Runnable对象,分别实现不同的任务,然后创建两个Thread对象,将这两个Runnable对象分别传递给不同的Thread对象,最后启动这两个线程。
示例代码:
```
public class Main {
public static void main(String[] args) {
Runnable task1 = new Runnable() {
@Override
public void run() {
// 执行任务1的代码
}
};
Runnable task2 = new Runnable() {
@Override
public void run() {
// 执行任务2的代码
}
};
Thread thread1 = new Thread(task1);
Thread thread2 = new Thread(task2);
thread1.start();
thread2.start();
}
}
```
上述代码中,创建了两个Runnable对象,分别实现了不同的任务,然后创建了两个Thread对象,将这两个Runnable对象分别传递给不同的Thread对象,最后启动这两个线程。
2. 使用ExecutorService和Callable
也可以使用ExecutorService和Callable来实现一半执行一个任务,另一半执行另一个任务。首先需要创建两个Callable对象,分别实现不同的任务,然后创建一个ExecutorService对象,调用submit()方法将这两个Callable对象分别提交给ExecutorService对象,最后使用shutdown()方法关闭ExecutorService对象。
示例代码:
```
public class Main {
public static void main(String[] args) throws Exception {
Callable<String> task1 = new Callable<String>() {
@Override
public String call() throws Exception {
// 执行任务1的代码
return "任务1执行结果";
}
};
Callable<String> task2 = new Callable<String>() {
@Override
public String call() throws Exception {
// 执行任务2的代码
return "任务2执行结果";
}
};
ExecutorService executorService = Executors.newFixedThreadPool(2);
Future<String> future1 = executorService.submit(task1);
Future<String> future2 = executorService.submit(task2);
System.out.println(future1.get()); // 输出任务1执行结果
System.out.println(future2.get()); // 输出任务2执行结果
executorService.shutdown();
}
}
```
上述代码中,创建了两个Callable对象,分别实现了不同的任务,然后创建了一个ExecutorService对象,调用submit()方法将这两个Callable对象分别提交给ExecutorService对象,最后通过Future对象获取任务执行的结果,最后关闭ExecutorService对象。