kimi
2020-05-27 c007f0ca1785db093d48f4846cda82fe8e955765
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package com.highdatas.mdm.util.pool;
 
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.springframework.beans.factory.annotation.Value;
 
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
 
/**
 * @author kimi
 * @description
 * @date 2020-04-14 11:42
 */
 
 
public abstract class PriorityTask  implements Runnable, Comparable<PriorityTask>{
    @Value("${pool.coefficient}")
    Integer cntCoefficient;
    @Value("${pool.timeout}")
    Integer timeout;
    protected Long prority;
    protected volatile MqEntity mqEntity;
    protected int cnt;
    protected Date time;
    protected Date endTime;
    protected HttpServletResponse response;
 
    public MqEntity getMqEntity() {
        return mqEntity;
    }
 
    public PriorityTask(MqEntity mqEntity, int cnt, Date time) {
        this.mqEntity = mqEntity;
        calPrority();
        calEndTime();
    }
 
    public PriorityTask(MqEntity mqEntity) {
        this.mqEntity = mqEntity;
    }
 
    public void calEndTime() {
        long time = this.time.getTime();
        if (timeout == null) {
            timeout = 3000000;
        }
        long l = time + timeout;
        this.endTime = new Date(l);
    }
 
    public void calPrority() {
        long basePrority = DbUtils.getDistanceTime2Long(DbUtils.getDateByEnd(), this.time) / 1000;
        if (cntCoefficient == null) {
            //默认系数50
            cntCoefficient = Constant.cntCoefficient;
        }
        int val = cnt * cntCoefficient;
        basePrority += val;
        this.prority = basePrority;
    }
 
 
    public int getCnt() {
        return cnt;
    }
 
    public Date getEndTime() {
        return endTime;
    }
 
    public Date getTime() {
        return time;
    }
 
 
    public PriorityTask(MqEntity mqEntity, long prority) {
        this.prority = prority;
        this.mqEntity = mqEntity;
    }
 
    public void setCnt(int cnt) {
        this.cnt = cnt;
        calPrority();
    }
 
    public void setTime(Date time) {
        this.time = time;
        calPrority();
        calEndTime();
    }
 
    public long getPrority() {
        return prority;
    }
 
    @Override
    public abstract void run();
 
 
    @Override
    public int compareTo(PriorityTask o) {
        return prority.compareTo(o.getPrority());
    }
 
 
}