Создать новый поток для каждого метода в том же классе - PullRequest
0 голосов
/ 03 июня 2018

У меня есть класс сервера со многими методами.Для каждого метода я хотел бы создать новую тему.Сервер может обрабатывать только 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 голосов
/ 03 июня 2018

Вы хотите, чтобы пул потоков обрабатывал запросы:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...