「java模拟并发请求」java并发请求队列控制

博主:adminadmin 2023-01-24 18:03:06 303

本篇文章给大家谈谈java模拟并发请求,以及java并发请求队列控制对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

请问java高手,tomcat的响应不了大量并发请求,如何处理?

你在停止TOMCAT的时候,会调用Catalina类的stopServer方法,在该方法中会取得已经存在的网络连接的Socket对象,将调用Socket的close方法关闭已经当前的网络连接。所以,当停止tomcat时,如果有新的请求的话,会被拒绝。

关于JAVA模拟发送post请求并响应内容

如果你是用java的api实现的模拟post请求,那么你需要在你之前构造的http request的header里加上

Cookie:名字=值 然后统一包装成你的conenction的OutputStream。

建议你用apache的HttpClient api项目,里面有专门处理cookie的api,这样事情就简单许多。

java 多线程并发请求数据,只要有一条线程获得数据,则其他线程终止运行,并打印出获得的数据

这边我写了一个例子,两个线程同时获取随机数,当获取的值为68的时候则停止所有进程。

这是目录结构:MyThreadOne和MyThreadTwo是两个线程,TestMain是主函数,MyThread继承Thread类。

MyThread.java

package com.xsx.test;

public class MyThread extends Thread {

public void stopThread() {}

}

MyThreadOne.java

package com.xsx.test;

import java.util.Random;

public class MyThreadOne extends MyThread{

private boolean isOK = true;

Random random = new Random();//演示

public void stopThread() {

this.isOK = false;

}

@Override

public void run() {

while(isOK) {

int x = random.nextInt(10000);

System.out.println("Thread One: " + x);

if(x == 68) {

TestMain.stopAll();

System.out.println("My Value is " + x);

break;

}

}

//这边你结合自己的逻辑来写,总之,是通过isOK来控制线程的

}

}

MyThreadTwo.java

package com.xsx.test;

import java.util.Random;

public class MyThreadTwo extends MyThread {

private boolean isOK = true;

Random random = new Random();//演示

public void stopThread() {

this.isOK = false;

}

@Override

public void run() {

while(isOK) {

int x = random.nextInt(10000);

System.out.println("Thread Two: " + x);

if(x == 68) {

TestMain.stopAll();

System.out.println("My Value is " + x);

break;

}

}

}

}

TestMain.java

package com.xsx.test;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

public class TestMain {

public static MapString, MyThread threadPool = new HashMapString, MyThread();//定义一个线程池

/***

 * 终止所有线程

 */

public static void stopAll() {

IteratorMyThread threads = threadPool.values().iterator();

while(threads.hasNext()) {

threads.next().stopThread();

}

threadPool.clear();

}

public static void main(String[] args) {

//实例化两个线程获取到随机数为68时就停止进程,并输出

MyThread thread1 = new MyThreadOne();//实例化线程1

MyThread thread2 = new MyThreadTwo();//实例化线程2

threadPool.put("thread1", thread1);//将线程1放入线程池中

threadPool.put("thread2", thread2);//将线程2放入线程池中

thread1.start();//运行

thread2.start();

}

}

项目已经打包上传

java模拟并发请求的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java并发请求队列控制、java模拟并发请求的信息别忘了在本站进行查找喔。