2015-06-05 4 views
0

Я новичок и не говорю по-английски, поэтому, пожалуйста, несите меня и свой английский.Java for loop in threads

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

Вы начинаете с 1000 евро на этом счету.

Проблема в том, что я не понимаю, почему должен быть цикл for с этими числами. Я получаю i = 0; и i ++, но почему i <1200000?

Что я достигаю с этим i < 1200000;?

Вот мои темы:

Первый берет деньги со счета.

public class AfThread extends Thread { 
private Rekening deRekening; 
public AfThread(Rekening r) { 
deRekening = r; 
} 
public void run() { 

for (int i = 0 ;i < 1200000 ;i++) { 
    deRekening.neemOp(600.00); 
if (deRekening.getSaldo() < 0) 
System.out.print("rood "); // wordt met wait() nooit uitgevoerd 
} 
    } 
    } 

Добавление резьбы:

public class BijThread extends Thread { 
private Rekening deRekening; 
public BijThread(Rekening r) { 

deRekening = r; 
} 

public void run() { 
for (int i = 0 ;i < 1200000 ;i++) { 
deRekening.stort(600.00); 
} 
} 
    } 
+1

Во-первых, ваш английский отличный. Во-вторых, i <120000 - это условие выхода для вашего цикла. То есть цикл будет продолжаться WHILE i <120000, а затем выйти. – Will

ответ

2

Простите, что я очень очень устарел голландский ...

Первый поток попытается взять/вычесть (neemOp) 600 из учетной записи. Для цикла for он делает это 1200000 раз. Если учетная запись опускается ниже нуля, она выведет «rood», что означает «красный» (я думаю ???), который, я полагаю, означает, что учетная запись отрицательная «перешла в красный цвет» (на английском жаргоне).

Вторая нить добавит/депозит (шторм) 600 к учетной записи. Для цикла for он делает это 1200000 раз.

Почему? Обычный клиент не отправляется в банкомат 1200000 раз. Я предполагаю, что это часть какого-то теста. Вы имитируете множество независимых депозитов и вычетов. Подумайте, есть ли у вас 1000 клиентов.Время от времени клиент может снимать наличные деньги в то же самое время, когда производится депозит (например, автоматический платеж). В программной программе депозит, скорее всего, делается на другой Thread, чем на снятие. Вы хотите быть абсолютно уверены, что это не вызовет проблемы, или у вас будет много гневных клиентов!

Этот тест не является совершенным, но, смешивая миллионы депозитов и уходит на два отдельных потока, он пытается проверить, что ничего странного не происходит. В конце теста учетная запись должна заканчиваться тем же количеством денег, что и в начале.

alstublieft

1

i < 1200000 является условием для цикла. Он будет работать только в том случае, если i меньше указанного числа.

Другими словами, то, что вы «достижения» является «установить ограничение на ваш для петли, поэтому не идет навсегда»

+0

Но зачем мне это нужно? Это случайное число? – user3599415

+0

Это всего лишь условие того, сколько раз вы хотите, чтобы цикл запускался @ user3599415. Вы можете сделать все, что захотите. – Aify

+0

Так что я могу предположить, что это похоже на число, которое показывает мне, как долго я хочу, чтобы цикл работал. Чем больше число, тем дольше он будет работать? – user3599415

1

< двутавровых 1200000 является условием UpperBound для цикла. Нет явной причины, по которой здесь должно быть 1200000. Я предполагаю, что причина числа контекстуальна, так как программа будет работать нормально с другим верхним. Он просто не будет работать так долго. Надеюсь это поможет.

0

Извините за плохой английский, но я попытаюсь объяснить.
Если вы получили этот цикл,

for (int i =0 ; i<1200000 ; i++) 

int i = 0; Определяет переменную я до 0
i < 120000 Sais для я меньше 120000
i++ Sais после подсчета петель я +1

Так что в этом петля i рассчитывается от 0 до 1200000.