当前位置: 首页 > news >正文

怎么做网站弄网盟php网站开发要学什么软件

怎么做网站弄网盟,php网站开发要学什么软件,wordpress博,文汇智能建站平台线程池改造 上一篇文章中我们用了Excutors创建了线程,这里我们将它改造成包含所有线程池核心参数的形式。 package com.tomcatServer.http;import java.util.concurrent.*;/*** 线程池跑龙套** author ez4sterben* date 2023/08/05*/ public class ThreadPool {pr…

线程池改造

上一篇文章中我们用了Excutors创建了线程,这里我们将它改造成包含所有线程池核心参数的形式。

package com.tomcatServer.http;import java.util.concurrent.*;/*** 线程池跑龙套** @author ez4sterben* @date 2023/08/05*/
public class ThreadPool {private int corePoolSize;private int maximumPoolSize;private long keepAliveTime;private static ThreadPoolExecutor threadPoolExecutor;public ThreadPool() {}public synchronized ThreadPoolExecutor getInstance() {if (threadPoolExecutor == null) {BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>();ThreadFactory threadFactory = Executors.defaultThreadFactory();threadPoolExecutor = new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime,TimeUnit.SECONDS,workQueue,threadFactory);}return threadPoolExecutor;}public static synchronized void shutdown() {if (threadPoolExecutor != null) {threadPoolExecutor.shutdown();threadPoolExecutor = null;}}public int getCorePoolSize() {return corePoolSize;}public void setCorePoolSize(int corePoolSize) {this.corePoolSize = corePoolSize;}public void setMaximumPoolSize(int maximumPoolSize) {this.maximumPoolSize = maximumPoolSize;}public void setKeepAliveTime(long keepAliveTime) {this.keepAliveTime = keepAliveTime;}
}

主方法中对多线程操作部分改为使用CompletableFuture执行

 // 5.初始化线程池ThreadPoolExecutor executor = XmlParseUtil.initThreadPool(ROOT);
// 6.处理http请求try {SocketStore.connect(port);while (true){Socket accept = SocketStore.getSocket().accept();if (accept != null){CompletableFuture.runAsync(() -> {try {SocketStore.handleRequest(accept);} catch (IOException e) {throw new RuntimeException(e);}}, executor);}}} catch (IOException e) {throw new RuntimeException(e);}finally {SocketStore.close();}

解析xml文件

现在我们有一个server.xml文件,我想解析其中的端口号以及线程池参数

<tomcat-server><port>80</port><core-pool-size>4</core-pool-size><maximum-pool-size>8</maximum-pool-size><keep-alive-time>60</keep-alive-time>
</tomcat-server>

如果想完成这个功能可以直接使用java本身自带的工具类,下面附上代码

package com.tomcatServer.utils;import com.tomcatServer.http.ThreadPool;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.ThreadPoolExecutor;public class XmlParseUtil {public static Integer parseServerConfig(String root){int port = 8080;try {NodeList nodeList = getServerConfig(root);for (int i = 0; i < nodeList.getLength(); i++) {Node node = nodeList.item(i);if (node.getNodeType() == Node.ELEMENT_NODE) {Element element = (Element) node;port = Integer.parseInt(element.getElementsByTagName("port").item(0).getTextContent().trim());}}} catch (Exception e) {e.printStackTrace();}return port;}public static ThreadPoolExecutor initThreadPool(String root){ThreadPool threadPool = new ThreadPool();int corePoolSize = 4;int maximumPoolSize = 8;int keepAliveTime = 60;try {NodeList nodeList = getServerConfig(root);for (int i = 0; i < nodeList.getLength(); i++) {Node node = nodeList.item(i);if (node.getNodeType() == Node.ELEMENT_NODE) {Element element = (Element) node;corePoolSize = Integer.parseInt(element.getElementsByTagName("core-pool-size").item(0).getTextContent().trim());maximumPoolSize = Integer.parseInt(element.getElementsByTagName("maximum-pool-size").item(0).getTextContent().trim());keepAliveTime = Integer.parseInt(element.getElementsByTagName("keep-alive-time").item(0).getTextContent().trim());}}} catch (Exception e) {e.printStackTrace();}threadPool.setCorePoolSize(corePoolSize);threadPool.setMaximumPoolSize(maximumPoolSize);threadPool.setKeepAliveTime(keepAliveTime);System.out.println(threadPool.getCorePoolSize());return threadPool.getInstance();}private static NodeList getServerConfig(String root) throws ParserConfigurationException, SAXException, IOException {File inputFile = new File(root + "\\src\\main\\java\\com\\tomcatServer\\config\\server.xml");DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document = builder.parse(inputFile);document.getDocumentElement().normalize();return document.getElementsByTagName("tomcat-server");}
}

启动测试

在这里插入图片描述
现在我的配置文件是这样的,在主方法中打印一下端口号,如果是80说明这个xml扫描成功了,然后我们再去访问80端口的Index页面。
在这里插入图片描述
在这里插入图片描述
http://localhost:8080/index.html
尝试访问8080时,已经无法访问了
在这里插入图片描述
接下来访问80端口
在这里插入图片描述
访问成功

现在我们的tomcat已经有一定的功能了,下一篇作者将对整个tomcat的代码结构做一些优化,并将现阶段的代码分享给读者。

【仿写tomcat】七、项目结构优化以及代码开源

http://www.yayakq.cn/news/902607/

相关文章:

  • 闲置物品交易网站怎么做的公司网站如何被百度收录
  • 深圳人社局官网泰州seo网络推广
  • 网站常用字号牡丹江商城网站开发设计
  • 太原哪里做网站门户网站建设工作室
  • 做网站head.htmwordpress链接形式
  • 网站开发是在电脑上打出来的资料么网站开发文献资料
  • 浙江省建设工程质量安全管理协会网站wordpress 页面栏目
  • wordpress中调用文章内容百度seo优化排名如何
  • 公司专业设计网站平顶山市网站建设公司
  • json做网站的数据库优秀的网站建设策划书
  • 广东建设监理协会网站题库淄博网站制作网页公司
  • 网站建设首选亿企联盟外网搭建
  • 中医院网站模板邯郸市城市建设局网站
  • 南京做网站公司哪家好江门市城乡建设局网站
  • 做株洲网站需要多少钱全景网站开发多少钱
  • 专业企业建站价格网站logo怎么做最清楚
  • 做捕鱼网站电话服务好的微网站建设
  • 网站开发和企业级开发有什么区别wordpress 更改 邮箱
  • 要建一个网站怎么做线上怎么做推广和宣传
  • 企业网站建设运营方案wordpress 双陈
  • 戴尔公司网站建设的特点是什么用网站做平台
  • 怎么填写网站备案申请如何推广一个项目
  • 市桥网站建设长春专业网站建设公司排名
  • 内蒙建设厅投诉网站西安优化网站
  • 盘龙网站建设国内广告设计
  • 东莞常平网站建设天津百度代运营
  • 网站建设客源在哪里找免费个人博客注册
  • 网站开发和软件开发哪个难餐厅网页设计模板html代码
  • seo网站排名优化价格腾讯云服务器购买后怎么使用
  • 唐山专业做网站公司免费域名解析