java poll返回值_Java DelayQueue poll()用法及代码示例

DelayQueue的poll()方法用于检索DelayQueue的头部。此方法还从DelayQueue中删除头。因此,当调用poll方法时,DelayQueue的大小将减小1。

用法:

public E poll ()

参数:

此方法不接受任何参数。

返回值:

此方法返回DelayQueue的头部,并将其从此DelayQueue中删除。

异常:

NullPointerException :如果head不存在,则此函数将返回null。

下面的程序来说明Java中的DelayQueue poll():

例:

// Java Program Demonstrate DelayQueue poll() method

import java.util.concurrent.*;

import java.util.*;

// The DelayObject for DelayQueue

// It must implement Delayed and

// its getDelay() and compareTo() method

class DelayObject implements Delayed {

private String name;

private long time;

// Contructor of DelayObject

public DelayObject(String name, long delayTime)

{

this.name = name;

this.time = System.currentTimeMillis()

+ delayTime;

}

// Implementing getDelay() method of Delayed

@Override

public long getDelay(TimeUnit unit)

{

long diff = time - System.currentTimeMillis();

return unit.convert(diff, TimeUnit.MILLISECONDS);

}

// Implementing compareTo() method of Delayed

@Override

public int compareTo(Delayed obj)

{

if (this.time < ((DelayObject)obj).time) {

return -1;

}

if (this.time > ((DelayObject)obj).time) {

return 1;

}

return 0;

}

// Implementing toString() method of Delayed

@Override

public String toString()

{

return "\n{"

+ " " + name + ", time=" + time + "}";

}

}

// Driver Class

public class GFG {

public static void main(String[] args) throws InterruptedException

{

// create object of DelayQueue

// using DelayQueue() constructor

BlockingQueue DQ

= new DelayQueue();

// Add numbers to end of DelayQueue

// using add() method

DQ.add(new DelayObject("A", 1));

DQ.add(new DelayObject("B", 2));

DQ.add(new DelayObject("C", 3));

DQ.add(new DelayObject("D", 4));

// Print delayqueue

System.out.println("Original DelayQueue: "

+ DQ + "\n");

// Print size of original DelayQueue

System.out.println("Original DelayQueue size: "

+ DQ.size() + "\n");

// poll() method for returning head of the DelayQueue

System.out.println("Head of the DelayQueue: "

+ DQ.poll());

// print DelayQueue size after poll method

System.out.println("\nAfter poll() method, DelayQueue size: "

+ DQ.size());

}

}

输出:

Original DelayQueue: [

{ A, time=1545817370442},

{ B, time=1545817370443},

{ C, time=1545817370444},

{ D, time=1545817370445}]

Original DelayQueue size: 4

Head of the DelayQueue:

{ A, time=1545817370442}

After poll() method, DelayQueue size: 3

例:

// Java Program Demonstrate DelayQueue poll() method

import java.util.concurrent.*;

import java.util.*;

// The DelayObject for DelayQueue

// It must implement Delayed and

// its getDelay() and compareTo() method

class DelayObject implements Delayed {

private String name;

private long time;

// Contructor of DelayObject

public DelayObject(String name, long delayTime)

{

this.name = name;

this.time = System.currentTimeMillis()

+ delayTime;

}

// Implementing getDelay() method of Delayed

@Override

public long getDelay(TimeUnit unit)

{

long diff = time - System.currentTimeMillis();

return unit.convert(diff, TimeUnit.MILLISECONDS);

}

// Implementing compareTo() method of Delayed

@Override

public int compareTo(Delayed obj)

{

if (this.time < ((DelayObject)obj).time) {

return -1;

}

if (this.time > ((DelayObject)obj).time) {

return 1;

}

return 0;

}

// Implementing toString() method of Delayed

@Override

public String toString()

{

return "\n{"

+ " " + name + ", time=" + time + "}";

}

}

// Driver Class

public class GFG {

public static void main(String[] args) throws InterruptedException

{

// create object of DelayQueue

// using DelayQueue() constructor

BlockingQueue DQ

= new DelayQueue();

// Print size of original DelayQueue

System.out.println("Original DelayQueue size: "

+ DQ.size() + "\n");

// poll() method for returning head of the DelayQueue

System.out.println("Head of the DelayQueue: "

+ DQ.poll());

}

}

输出:

Original DelayQueue size: 0

Head of the DelayQueue: null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值