Проблема состоит в том, что обновления базы данных должны происходить одно за другим, чтобы отражать последовательный прирост числа. Это будет задыхаться для 1000 потоков. Если скорость очень важна, вам, возможно, придется создать пользовательский слой данных, который реплицирует соответствующие таблицы базы данных в памяти как объекты и только периодически сохраняет изменения в базе данных.

я есть 1000 потоков, и есть задача увеличить значение на 1 обновление базы данных. Например, например: изначально моя база данных имеет значение 0, первый поток идет, он увеличивает значение до 1, затем второй поток приходит, он увеличивает это значение до 2, затем третий приходит, он увеличивает значение до 3 и так до 1000 потоков, поэтому в конце, когда приходит 1000-й поток, он меняет значение на 1000 с 999.

Я написал код, и код работает отлично, но проблема в том, что обновление этих значений занимает более минуты, поэтому как минимизировать это время, чтобы 1000 потоков могли обновить его за наименьшее время.

public String increaseAndUpdateNumber() {
        Session session = getSession();
    try {
        synchronized (this) {
            int number = dao.getNumberdao().getNumberCount(session);
            Number numberObj = dao.getNumberdao().getByNumber(session,number);

            //begin of transaction
            Transaction numberTx = session.beginTransaction();
            number+=1;
            System.out.println("number is :"+number+" numberObj :"+numberObj);
            numberObj.setNumber(number);
            dao.getNumberdao().update(session, numberObj);
            numberTx.commit();
            //end of transaction
        }
        return "success";
    }catch(Exception e){
        e.printStackTrace();
    }finally {
        session.close();    
    }
    return null;
}

Действуйте этими 1000 нитями в кратчайшие сроки.

Ответы на вопрос(0)

Ваш ответ на вопрос