为同一个类中的每个方法创建新线程

时间:2018-06-03 14:14:01

标签: java multithreading concurrency

我有一个包含许多方法的服务器类。对于每个方法,我想创建新的线程。服务器只能处理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类中的每个方法,在服务器类的相应方法中创建线程?

1 个答案:

答案 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;
}