pc端网站怎么做自适应,哪个公司网站备案快,wordpress 文件类型,o2o网站建设教程说明 这是针对《Java并发编程实战》(Java Concurrency in Practice)一书中的示例代码进行扩展#xff0c;并且进行验证的完整代码#xff0c;具体背景可看这篇文章#xff1a;1-《Java并发编程实战》(Java Concurrency in Practice) 代码示例 下面的示例代码都是针对书中的并且进行验证的完整代码具体背景可看这篇文章1-《Java并发编程实战》(Java Concurrency in Practice) 代码示例 下面的示例代码都是针对书中的不完整的代码扩展不再介绍具体上下文背景如果你也在看这本书可以拿我这里的示例代码做个参考并欢迎提出意见和建议
程序清单2-5
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;/*** DESCRIPTION:* USER: shg* DATE: 2024/1/13 11:15*/
public class UnsafeCachingFactorizer extends HttpServlet {private final AtomicReferenceBigInteger lastNumber new AtomicReference();private final AtomicReferenceBigInteger[] lastFactors new AtomicReference();Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {BigInteger i extractFromRequest(req);if (i.equals(lastNumber.get())) {encodeIntoResponse(resp, i, lastFactors.get());} else {BigInteger[] factors factor(i);lastNumber.set(i);lastFactors.set(factors);encodeIntoResponse(resp, i, lastFactors.get());}}private BigInteger extractFromRequest(HttpServletRequest req) {return new BigInteger(req.getParameter(key));}private void encodeIntoResponse(HttpServletResponse resp, BigInteger i, BigInteger[] factors) throws IOException {System.out.println(i --- Arrays.asList(factors));resp.setContentType(text/html;charsetutf-8);PrintWriter writer resp.getWriter();writer.println(htmlbody);writer.println(h1 i 因数分解结果为 Arrays.asList(factors));writer.println(/body/html);}private BigInteger[] factor(BigInteger number) {ListBigInteger factors new ArrayList();BigInteger divisor BigInteger.valueOf(2);while (number.compareTo(BigInteger.ONE) 0) {if (number.mod(divisor).equals(BigInteger.ZERO)) {number number.divide(divisor);factors.add(divisor);} else {divisor divisor.add(BigInteger.ONE);}}return factors.toArray(new BigInteger[0]);}
}压测线程设置 使用Jmeter开启两个线程组每个线程组传递的参数不一样但是访问同一个Servlet组件即访问同一个UnsafeCachingFactorizer类然后在控制台分析输出结果具体操作如下图 压测结果分析 首先要明确的是这是一个Servlet组件即UnsafeCachingFactorizer类的功能是因数分解并且希望将最近的计算结果缓存起来即当两个连续的请求对相同的数值进行因数分解时可以直接使用上一次的计算结果而无需重新计算。 并且我们可以事先知道是的129的因数分解结果应该是 3和4324的因数分解结果应该是222和3现在看如下图