作业
package threadlocal;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadLocalHomework {
//创建线程池
public static ExecutorService threadPool= Executors.newFixedThreadPool(20);
//创建线程要执行的方法
public String data(int num){
//清除之前线程访问的数据
ThreadSafeStringBuilder.stringBuilderThreadLocal.remove();
//获取每个线程要获取的对象
StringBuilder stringBuilder=ThreadSafeStringBuilder.stringBuilderThreadLocal.get();
//清除之前的数据
stringBuilder.delete(0,stringBuilder.length());
//添加数据
return stringBuilder.append("数字"+num).toString();
}
//测试
public static void main(String[] args) {
//20个请求
for(int i=0;i<20;i++){
int count=i;
threadPool.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//执行添加数据方法
String result= new ThreadLocalHomework().data(count);
System.out.println(result);
}
});
}
//关闭线程
threadPool.shutdown();
System.out.println("是否关闭:"+threadPool.isShutdown());
}
}
//生成创建threadlocal类
class ThreadSafeStringBuilder{
public static ThreadLocal<StringBuilder> stringBuilderThreadLocal
=new ThreadLocal<StringBuilder>(){
@Override
protected StringBuilder initialValue() {
return new StringBuilder();
}
};
}
20
收起
正在回答 回答被采纳积分+1
2回答
java工程师2020版
- 参与学习 人
- 提交作业 9400 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星