@Data
@Accessors(chain = true)
public class PpcProcessResult {
public static volatile int globalThreadStatus = DEFAULT_PPC_THREAD_STATUS;
private String host;
private Integer port;
private Boolean isDebug;
private Integer threadStatus;
public synchronized static void setBusy(int tid){
globalThreadStatus = globalThreadStatus | (1 << tid);
}
public synchronized static void setIdle(int tid){
globalThreadStatus = globalThreadStatus & (~(1 << tid));
}
public synchronized static boolean isBusy(int tid){
return (1 << tid) == ((1 << tid) & globalThreadStatus);
}
public synchronized static Integer getIdleTid(){
if(globalThreadStatus >= BUSY_PPC_THREAD_STATUS){
return null;
}
int tid = 1;
//如果繁忙,则自增继续,直到取出status等于0
int status = 1 << tid;
while ((status & globalThreadStatus) != 0){
status = status << 1;
tid++;
}
return tid;
}
}