java基础 并发测试代码
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package concurrent.queue;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class BlockingQueueTest {
|
||||
ArrayBlockingQueue<Integer> arrayBlockingQueue;
|
||||
Integer methodNumber;
|
||||
|
||||
public void offerTest() {
|
||||
ConcurrentLinkedQueue<Integer> concurrentLinkedQueue = new ConcurrentLinkedQueue<>();
|
||||
boolean offer = arrayBlockingQueue.offer(1);
|
||||
if (!offer) {
|
||||
System.out.println("队列满了");
|
||||
return;
|
||||
}
|
||||
System.out.println("添加成功");
|
||||
}
|
||||
|
||||
public void addTest() {
|
||||
boolean offer = arrayBlockingQueue.add(1);
|
||||
if (!offer) {
|
||||
System.out.println("队列满了");
|
||||
return;
|
||||
}
|
||||
System.out.println("添加成功");
|
||||
}
|
||||
|
||||
public void putTest() throws InterruptedException {
|
||||
arrayBlockingQueue.put(1);
|
||||
System.out.println("添加成功");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package concurrent.queue;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.concurrent.DelayQueue;
|
||||
import java.util.concurrent.Delayed;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @description: 延迟队列
|
||||
* @author: wangyl
|
||||
* @date: 2024/6/30
|
||||
*/
|
||||
@Data
|
||||
public class DelayedQueue implements Delayed {
|
||||
/**
|
||||
* 延迟时间
|
||||
*/
|
||||
private long time;
|
||||
/**
|
||||
* 延迟任务名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 延迟任务创建时间
|
||||
*/
|
||||
private String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
|
||||
|
||||
public DelayedQueue(String name, long time, TimeUnit unit) {
|
||||
this.name = name;
|
||||
this.time = System.currentTimeMillis() + (time > 0 ? unit.toMillis(time) : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDelay(TimeUnit unit) {
|
||||
return time - System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Delayed o) {
|
||||
DelayedQueue Order = (DelayedQueue) o;
|
||||
long diff = this.time - Order.time;
|
||||
if (diff <= 0) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
DelayedQueue Order1 = new DelayedQueue("Order1", 5, TimeUnit.SECONDS);
|
||||
DelayedQueue Order2 = new DelayedQueue("Order2", 10, TimeUnit.SECONDS);
|
||||
DelayedQueue Order3 = new DelayedQueue("Order3", 15, TimeUnit.SECONDS);
|
||||
DelayQueue<DelayedQueue> delayQueue = new DelayQueue<>();
|
||||
delayQueue.put(Order1);
|
||||
delayQueue.put(Order2);
|
||||
delayQueue.put(Order3);
|
||||
|
||||
System.out.println("订单延迟队列开始时间:" + LocalDateTime.now()
|
||||
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
while (delayQueue.size() != 0) {
|
||||
/**
|
||||
* 取队列头部元素是否过期
|
||||
*/
|
||||
DelayedQueue take = delayQueue.take();
|
||||
System.out.format("订单:{%s}被取消, 放入时间{%s},取消时间:{%s}\n", take.getName(), take.getTimestamp(), LocalDateTime.now()
|
||||
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user