import java.util.*什么意思_JAVA教程
【import java.util.*;】是导入java.util包中类接口,Java中import的作用是导入要用到的包中的类接口,import就是在java文件开头的地方,先说明会用到那些类别,接着我们就能在代码中只用类名指定某个类。
java创建线程池的四种方式是:1、newCachedThreadPool创建一个可缓存线程池;2、newFixedThreadPool创建一个定长线程池;3、newScheduledThreadPool创建一个定长线程池。
Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
java中“==”操作符和equals方法有什么区别_JAVA教程
java中“==”操作符和equals方法的区别是:“==”操作符专门用来比较两个变量的值是否相同;equals方法用来比较两个独立对象的内容是否相同。字符串的比较基本上都是使用equals方法。
详细内容可参见博友的博客Java并发编程:线程池的使用
1.newCachedThreadPool 这里的线程池是无限大的,当一个线程完成任务之后,这个线程可以接下来完成将要分配的任务,而不是创建一个新的线程。
public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); } }
2.newFixedThreadPool
public static void main(String[] args) { ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); for (int i = 0; i < 10; i++) { final int index = i; fixedThreadPool.execute(new Runnable() { public void run() { try { System.out.println(index); Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
3.newScheduledThreadPoo
public static void main(String[] args) { ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); for (int i = 0; i < 10; i++) { scheduledThreadPool.schedule(new Runnable() { public void run() { System.out.println("delay 3 seconds"); } }, 3, TimeUnit.SECONDS); } }
4.newSingleThreadExecutor 按顺序来执行线程任务 但是不同于单线程,这个线程池只是只能存在一个线程,这个线程死后另外一个线程会补上
public static void main(String[] args) { ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); for (int i = 0; i < 10; i++) { final int index = i; singleThreadExecutor.execute(new Runnable() { public void run() { /* System.out.println(index);*/ try { System.out.println(index); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
推荐教程: 《java教程》
以上就是java创建线程池的四种方式是什么的详细内容,更多请关注ki4网其它相关文章!
如何区别java中的重写和重载概念_JAVA教程
重写和重载的区别:1、重载必须具有不同的参数列表,重写参数列表必须与被重写的方法相同;2、重载可以有不同的返回类型,重写的返回类型必须与被重写方法的返回类型相同。