您的位置:首页 > 游戏 > 手游 > windows优化大师有毒吗_开发公司与物业公司交接清单_怎么引流到微信呢_性价比高seo排名

windows优化大师有毒吗_开发公司与物业公司交接清单_怎么引流到微信呢_性价比高seo排名

2024/12/26 21:42:31 来源:https://blog.csdn.net/wen262856298/article/details/143503336  浏览:    关键词:windows优化大师有毒吗_开发公司与物业公司交接清单_怎么引流到微信呢_性价比高seo排名
windows优化大师有毒吗_开发公司与物业公司交接清单_怎么引流到微信呢_性价比高seo排名
import org.apache.tomcat.util.threads.TaskQueue;
import org.apache.tomcat.util.threads.TaskThreadFactory;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TomcatThreadPoolExecutorTest {public static void main(String[] args) throws InterruptedException {String namePrefix = "歪歪歪-exec-";boolean daemon = true;TaskQueue taskqueue = new TaskQueue(300);TaskThreadFactory tf = new TaskThreadFactory(namePrefix, daemon, Thread.NORM_PRIORITY);ThreadPoolExecutor executor = new ThreadPoolExecutor(5,150, 60000, TimeUnit.MILLISECONDS, taskqueue, tf);
//        taskqueue.setParent(executor);for (int i = 0; i < 305; i++) {try {executor.execute(() -> {logStatus(executor, "创建任务");try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}});} catch (Exception e) {e.printStackTrace();}}Thread.currentThread().join();}private static void logStatus(ThreadPoolExecutor executor, String name) {TaskQueue queue = (TaskQueue) executor.getQueue();System.out.println(Thread.currentThread().getName() + "-" + name + "-:" +"核心线程数:" + executor.getCorePoolSize() +"\t活动线程数:" + executor.getActiveCount() +"\t最大线程数:" + executor.getMaximumPoolSize() +"\t总任务数:" + executor.getTaskCount() +"\t当前排队线程数:" + queue.size() +"\t队列剩余大小:" + queue.remainingCapacity());}
}

队列的使用在日常开发中,特别常见,但是对于队列接口中的一些方法可能使用起来有些疑惑,本文简单记录一下关于Queue接口中几种类似方法的区别。

  • add() 和 offer()
    • add() : 添加元素,如果添加成功则返回true,如果队列是满的,则抛出异常
    • offer() : 添加元素,如果添加成功则返回true,如果队列是满的,则返回false
    • 区别:对于一些有容量限制的队列,当队列满的时候,用add()方法添加元素,则会抛出异常,用offer()添加元素,则返回false
  • remove() 和 poll()
    • remove() : 移除队列头的元素并且返回,如果队列为空则抛出异常
    • poll() : 移除队列头的元素并且返回,如果队列为空则返回null
    • 区别:在移除队列头元素时,当队列为空的时候,用remove()方法会抛出异常,用poll()方法则会返回null
  • element() 和 peek()
    • element() :返回队列头元素但不移除,如果队列为空,则抛出异常
    • peek() :返回队列头元素但不移除,如果队列为空,则返回null
    • 区别 :在取出队列头元素时,如果队列为空,用element()方法则会抛出异常,用peek()方法则会返回null

附上源码以及中文注释:

public interface Queue<E> extends Collection<E> {/*** Inserts the specified element into this queue if it is possible to do so* immediately without violating capacity restrictions, returning* {@code true} upon success and throwing an {@code IllegalStateException}* if no space is currently available.* 插入一个具体的元素到队列中如果没有超过容量限制并且返回true。* 如果没有队列已满则抛出IllegalStateException** @param e the element to add* @return {@code true} (as specified by {@link Collection#add})* @throws IllegalStateException if the element cannot be added at this*         time due to capacity restrictions* @throws ClassCastException if the class of the specified element*         prevents it from being added to this queue*         如果插入的对象不对,则会抛出类型转换ClassCastException* @throws NullPointerException if the specified element is null and*         this queue does not permit null elements*         如果插入null,则会抛出空指针异常* @throws IllegalArgumentException if some property of this element*         prevents it from being added to this queue* 添加元素,如果添加成功则返回true,如果队列是满的,则抛出异常*/boolean add(E e);/*** Inserts the specified element into this queue if it is possible to do* so immediately without violating capacity restrictions.* When using a capacity-restricted queue, this method is generally* preferable to {@link #add}, which can fail to insert an element only* by throwing an exception.* 插入一个具体的元素到队列中如果没有超过容量限制并且返回true。* 如果没有队列已满则返回false。* 当使用一个有容量限制的队列时,建议使用该方法offer(),因为使用add()方法当队列满时会* 直接抛出异常,则offer()方法则返回false** @param e the element to add* @return {@code true} if the element was added to this queue, else*         {@code false}* @throws ClassCastException if the class of the specified element*         prevents it from being added to this queue* @throws NullPointerException if the specified element is null and*         this queue does not permit null elements* @throws IllegalArgumentException if some property of this element*         prevents it from being added to this queue* 添加元素,如果添加成功则返回true,如果队列是满的,则返回false*/boolean offer(E e);/*** Retrieves and removes the head of this queue.  This method differs* from {@link #poll poll} only in that it throws an exception if this* queue is empty.** @return the head of this queue* @throws NoSuchElementException if this queue is empty* 移除队列头的元素并且返回,如果队列为空则抛出异常*/E remove();/*** Retrieves and removes the head of this queue,* or returns {@code null} if this queue is empty.** @return the head of this queue, or {@code null} if this queue is empty* 移除队列头的元素并且返回,如果队列为空则返回null*/E poll();/*** Retrieves, but does not remove, the head of this queue.  This method* differs from {@link #peek peek} only in that it throws an exception* if this queue is empty.** @return the head of this queue* @throws NoSuchElementException if this queue is empty* 返回队列头元素但不移除,如果队列为空,则抛出异常*/E element();/*** Retrieves, but does not remove, the head of this queue,* or returns {@code null} if this queue is empty.** @return the head of this queue, or {@code null} if this queue is empty* 返回队列头元素但不移除,如果队列为空,则返回null*/E peek();
}



作者:曾泽浩
链接:https://www.jianshu.com/p/c41053d16713/
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com