「java模拟并发请求」java并发请求队列控制
本篇文章给大家谈谈java模拟并发请求,以及java并发请求队列控制对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、请问java高手,tomcat的响应不了大量并发请求,如何处理?
- 2、关于JAVA模拟发送post请求并响应内容
- 3、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模拟并发请求的信息别忘了在本站进行查找喔。