我有一个包含许多方法的服务器类。对于每个方法,我想创建新的线程。服务器只能处理10个并发请求。
public class Server {
private ArrayList<Client> clients=new ArrayList<>();// CRITICAL SECTION
private ArrayList<Stock> stocks=new ArrayList<>(); //CRITICAL SECTION
private int currentRequests;
private final int MaximumRequest=10; //maximum current requests.
public synchronized void updateStockValue(Stock st) {
//do something with stocks list;
}
public synchronized void addNewUser(Client cl) {
//do something with clients list
}
}
我的测试班:
public class Test{
public static void main (String [] args){
Server server=new Server();
Client client= new Client();
Stock stock=new Stock();
/* all I want to do in the test class methods like : */
server.updateStockValue(stock);
server.addNewUser(client);
}
}
是否可以从Test类中的每个方法,在服务器类的相应方法中创建线程?
答案 0 :(得分:0)
您希望线程池处理请求:
Executor pool = Executors.newFixedThreadPool(10); // There are at most 10 concurrent request handler running,
// new requests will be putted in queue
当有新请求到来时,您可以:
pool.submit(() -> server.updateStockValue(stock));
但我认为,您应该在list
级别进行同步,而不是像这样的级别:
public synchronized void updateStockValue(Stock st) {
//do something with stocks list;
}