Commit 4d0bfa78 authored by Tong Li's avatar Tong Li

多线程优化

parent e90e9ad9
...@@ -109,7 +109,7 @@ public class Chromosome { ...@@ -109,7 +109,7 @@ public class Chromosome {
/// <summary> /// <summary>
/// 解码后的调度结果 /// 解码后的调度结果
/// </summary> /// </summary>
private List<GAScheduleResult> Result; private CopyOnWriteArrayList<GAScheduleResult> Result;
/// <summary> /// <summary>
/// 解码后的调度结果 /// 解码后的调度结果
......
...@@ -20,6 +20,7 @@ import java.time.Duration; ...@@ -20,6 +20,7 @@ import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
...@@ -436,7 +437,7 @@ if(finishedOrder==null||finishedOrder.size()==0) ...@@ -436,7 +437,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
List<ScheduleResultDetail> geneDetails = machineCalculator.getNextAvailableTime(machine, earliestStartTime, -1, CopyOnWriteArrayList<ScheduleResultDetail> geneDetails = machineCalculator.getNextAvailableTime(machine, earliestStartTime, -1,
processingTimeTotal, chromosome.getResult(), operation.IsInterrupt!=1, true,processingTime, operation.getQuantity(), true); processingTimeTotal, chromosome.getResult(), operation.IsInterrupt!=1, true,processingTime, operation.getQuantity(), true);
......
...@@ -12,6 +12,7 @@ import org.springframework.context.annotation.ScopeMetadata; ...@@ -12,6 +12,7 @@ import org.springframework.context.annotation.ScopeMetadata;
import javax.xml.transform.Result; import javax.xml.transform.Result;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
...@@ -931,9 +932,9 @@ Integer newMachineId1=newMachineId.intValue(); ...@@ -931,9 +932,9 @@ Integer newMachineId1=newMachineId.intValue();
chromosome.setResultOld(ProductionDeepCopyUtil.deepCopyList(chromosome.getResult(),GAScheduleResult.class)); chromosome.setResultOld(ProductionDeepCopyUtil.deepCopyList(chromosome.getResult(),GAScheduleResult.class));
chromosome.getResult().clear(); chromosome.getResult().clear();
List<GAScheduleResult> Resultlock= chromosome.getResult().stream() CopyOnWriteArrayList<GAScheduleResult> Resultlock= chromosome.getResult().stream()
.filter(o -> o.isIsLocked() == true) .filter(o -> o.isIsLocked() == true)
.collect(Collectors.toList()); .collect(Collectors.toCollection(CopyOnWriteArrayList::new));
chromosome.setResult(ProductionDeepCopyUtil.deepCopyList(Resultlock,GAScheduleResult.class)); chromosome.setResult(ProductionDeepCopyUtil.deepCopyList(Resultlock,GAScheduleResult.class));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment