用多线程去处理 "123","456","789" 三个字符串,然后以"147","258","369"输出
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* 用多线程去处理 "123","456","789" 三个字符串,然后以"147","258","369"输出
*
*/
public class ThreadSample {
public static void main(String[] args) throws InterruptedException, ExecutionException {
String str1 = "123",str2 = "456",str3 = "789";
ProcessThread thread3 = new ProcessThread(str3, null);
ProcessThread thread2 = new ProcessThread(str2, thread3);
ProcessThread thread1 = new ProcessThread(str1, thread2);
for (int i = 0; i < str1.length(); i++) {
thread1.setIndex(i);
FutureTask<String> future = new FutureTask<String>(thread1);
new Thread(future).start();
String outStr = future.get();
System.out.println(outStr);
}
}
}
输出:
147
258
369
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class ProcessThread implements Callable<String>{
private String value;
private ProcessThread next;
private Integer index;
public String call() throws Exception {
if(this.next!=null){
this.next.setIndex(this.index);
//开启下一个线程
FutureTask<String> future = new FutureTask<String>(this.next);
new Thread(future).start();
String nextString = future.get();
return value.charAt(this.index)+nextString;
}
return String.valueOf(value.charAt(this.index));
}
public ProcessThread(String value, ProcessThread next) {
this.value = value;
this.next = next;
}
//set/get 省略
}
推荐阅读
Spring事务传播行为详解
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可...
JerryTse赞 244阅读 122.9k评论 97
Java12的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 63阅读 11.9k
Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 32阅读 24.7k评论 1
一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...
王中阳Go赞 34阅读 2.6k评论 1
Java11的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 28阅读 15.4k评论 3
Java5的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 13阅读 20.5k
Java9的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 20阅读 14.6k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。