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