Многопото́чность слабо понимаю, набросал код на
тредах (kotlin)
val start = System.currentTimeMillis()
var arrayStart = mutableListOf<String>()
var arrayResult = mutableListOf<String>()
var arrayHelper1 = mutableListOf<String>()
var arrayHelper2 = mutableListOf<String>()
repeat(3_000_000) {
arrayStart.add((it * 2).toString())
}
val thread1 = Thread(
Runnable {
for (i in 0 until arrayStart.size/2-3 step 3) {
val t = arrayStart.subList(i, i+3)
arrayHelper1.addAll(0, t.reversed())
}
}
)
val thread2 = Thread(
Runnable {
for (i in arrayStart.size/2..arrayStart.size-3 step 3) {
val t = arrayStart.subList(i, i+3)
arrayHelper2.addAll(0, t.reversed())
}
}
)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
arrayResult.addAll(arrayHelper1)
arrayResult.addAll(arrayHelper2)
val time = (System.currentTimeMillis() - start) / 1000
println("time: $time")
и код
без тредов
val start = System.currentTimeMillis()
var arrayStart = mutableListOf<String>()
var arrayResult = mutableListOf<String>()
var arrayHelper1 = mutableListOf<String>()
var arrayHelper2 = mutableListOf<String>()
repeat(3_000_000) {
arrayStart.add((it * 2).toString())
}
for (i in 0 until arrayStart.size/2-3 step 3) {
val t = arrayStart.subList(i, i+3)
arrayHelper1.addAll(0, t.reversed())
}
for (i in arrayStart.size/2..arrayStart .size-3 step 3) {
val t = arrayStart.subList(i, i+3)
arrayHelper2.addAll(0, t.reversed())
}
arrayResult.addAll(arrayHelper1)
arrayResult.addAll(arrayHelper2)
val time = (System.currentTimeMillis() - start) / 1000
println("time: $time")
оба кода выполнились за ~300 секунд, как нужно написать код чтоб была видна разница?