Акции каждой из компаний должны обслуживать отдельный поток биржи, который раз в 30 секунд должен менять цену на акции случайным образом +-3 %
//Я что-то типа такого накрутила, еще мне нужно это сделать, чтобы он
//повторялся через каждые 30 мин.
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Optional;
import java.util.Random;
public class Change {
public static final Object LOCK = new Object();
public static void changePrice() {
ArrayList<Integer> AL = new ArrayList<Integer>();
int number;
Random rnd = new Random();
for (int i = 0; i < 1; i++) {
number = rnd.nextInt() % 50;
AL.add(number);
}
try {
synchronized (LOCK){
LOCK.wait(300);
Optional<Integer> sum = AL.stream()
.map(x -> x + 140)
.reduce(Integer::sum);
System.out.println(LocalTime.now() + ":" + "AAPL changed the price to:" + sum.get() );}
}catch (InterruptedException a){
a.printStackTrace();
}
try {
synchronized (LOCK) {
LOCK.wait(300);
Optional<Integer> sum2 = AL.stream()
.map(x -> x + 387)
.reduce(Integer::sum);
System.out.println(LocalTime.now() + ":" + "COkE changed the price to:" + sum2.get());}
}catch (InterruptedException b) {
b.printStackTrace();
}
try {
synchronized (LOCK) {
LOCK.wait(300);
Optional<Integer> sum3 = AL.stream()
.map(x -> x + 387)
.reduce(Integer::sum);
System.out.println(LocalTime.now() + ":" + "IBM changed the price to:" + sum3.get());
}
} catch (InterruptedException d) {
d.printStackTrace();
}
}
public static void main(String[] args) {
changePrice();
}
}
Источник: Stack Overflow на русском