Мне неприятно говорить это как ответ, но вы уверены, что сокращение числа происходит в отдельном потоке от EDT?Потому что серьезно, это не должно вести себя так.Я уверен, что для этого есть логическая причина, и наиболее очевидным является то, что вы блокируете EDT во время обработки номера.
Возможно, вы думаете, что создаете новую тему, ноне так?
Runnable r = new Runnable() {
public void run() {
ClassName.this.executeJNI();
}
};
new Thread(r).start();
Либо это, либо что-то в обработке чисел блокирует ресурс, который нужен потоку EDT - но я даже не знаю, как это могло бы выглядеть.