Я строю тестовую упряжь в java и пытаюсь сравнить производительность и латентность двух парсеров. Разбирает данные, полученные от одного живого, одного канала. У меня нет контроля над фидом, и у меня нет «имитированного фида» для издевательских данных, поэтому для сравнения яблок с яблоками я бы хотел, чтобы мои анализы проводились как можно раньше. Я новичок в java и threading, поэтому не уверен, что это лучший подход. Моя идея состояла в том, чтобы открутить 2 резьбы:Как выполнить одновременно две операции?
SomeFeed feed = new SomeFeed();
Thread thread1 = new Thread() {
public void run() {
parser1.parseFeed(feed);
}
};
Thread thread2 = new Thread() {
public void run() {
parse2.parseFeed(feed);
}
};
thread1.start();
thread2.start();
Будет ли поток работать таким образом примерно синхронно? Или есть лучший подход?
Благодаря
Если вы можете одновременно запускать два парсера из одного и того же канала, вы также можете просто запускать их последовательно. Запуск одновременно вводит коробку pandoras с несогласованностью. Но я подозреваю, что это не сработает, потому что фид не поддержит его. – Durandal
Мы не решаемся запускать их последовательно, потому что выход фида может резко и непредсказуемо измениться. –
Это решение неправильной проблемы. Вы должны задать вопрос о том, как вы могли бы изменить свой дизайн, чтобы предоставить способ для издевательства данных (есть несколько хорошо установленных и простых методов для этого) вместо того, чтобы пытаться решить проблему, которая возникает рядом с невозможной. Это не только значительно повысит надежность ваших тестов производительности, но и позволит вам проверять ваши парсеры, что всегда хорошо. – Voo