Может ли Java-код выполняться непоследовательно? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Может ли Java-код выполняться непоследовательно? [закрыто]

Сообщение Anonymous »

У меня есть пункт контекстного меню со следующим кодом:
MenuItem mi1=new MenuItem("to hand");
mi1.setOnAction(e->{
list.remove(card);
arena.getHand().addCard(card);
updateSlots();
shuffle();
});

метод shuffle создает новый поток и запускает большую часть кода в этом новом потоке; другие функции (addCard и updateSlots) выполняются в основном потоке;
из этого кода я ожидаю, что функция shuffle будет запускаться только после завершения функции updateSlots;
но, похоже, это не так; если я ничего не упустил, метод shuffle вызывается еще до того, к а к < e m > u p d a t e S l o t s < / e m > з а в е р ш и т с я ; < b r / > к а к т а к о е м о ж е т б ы т ь ? я ч т о - т о у п у с т и л ? < / p > < b r / > о б н о в л е н и е : < / p > < b r / > < c o d e > p u b l i c v o i d u p d a t e S l o t s ( ) { < b r / > f o r ( i n t i = 0 ; i & l t ; l i s t . s i z e ( ) ; i + + ) { < b r / > C a r d c a r d = l i s t . g e t ( i ) ; < b r / > S h a p e s h = s l o t s [ i ] ; < b r / > s h . s e t F i l l ( c a r d . g e t C o l o r ( ) ) ; < b r / > < b r / > M e n u I t e m m i 1 = n e w M e n u I t e m ( & q u o t ; t o h a n d & q u o t ; ) ; < b r / > m i 1 . s e t O n A c t i o n ( e - & g t ; { < b r / > l i s t . r e m o v e ( c a r d ) ; < b r / > a r e n a . g e t H a n d ( ) . a d d C a r d ( c a r d ) ; < b r / > u p d a t e S l o t s ( ) ; < b r / > s h u f f l e ( ) ; < b r / > } ) ; < b r / > < b r / > M e n u I t e m m i 2 = n e w M e n u I t e m ( & q u o t ; s u m m o n i n a t k & q u o t ; ) ; < b r / > m i 2 . s e t O n A c t i o n ( e - & g t ; { < b r / > c a r d . s e t P o s i t i o n ( & q u o t ; a t k & q u o t ; ) ; < b r / > c a r d . s e t F a c e ( & q u o t ; u p & q u o t ; ) ; < b r / > a r e n a . g e t M o n s t e r Z o n e ( ) . a d d C a r d ( c a r d ) ; < b r / > } ) ; < b r / > < b r / > M e n u I t e m m i 3 = n e w M e n u I t e m ( & q u o t ; s u m m o n i n d e f & q u o t ; ) ; < b r / > m i 3 . s e t O n A c t i o n ( e - & g t ; { < b r / > c a r d . s e t P o s i t i o n ( & q u o t ; d e f & q u o t ; ) ; < b r / > c a r d . s e t F a c e ( & q u o t ; u p & q u o t ; ) ; < b r / > a r e n a . g e t M o n s t e r Z o n e ( ) . a d d C a r d ( c a r d ) ; < b r / > });

MenuItem mi4=new MenuItem("to backrow");
mi4.setOnAction(e->{
card.setFace("up");
arena.getBackrowZone().addCard(card);
});

MenuItem mi5=new MenuItem("to graveyard");
mi5.setOnAction(e->{
list.remove(card);
updateSlots();
arena.getGraveyard().addCard(card);
});

MenuItem mi6=new MenuItem("remove");
mi6.setOnAction(e->{
list.remove(card);
updateSlots();
arena.getRemovedZone().addCard(card);
});

ContextMenu cm=new ContextMenu(mi1,mi2,mi3,mi4,mi5,mi6);
sh.setOnMouseClicked(e->{
cm.show(sh,e.getScreenX(),e.getScreenY());
});
}
for(int i=list.size();i

Подробнее здесь: https://stackoverflow.com/questions/788 ... quentially
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»