java线程池框架解析方法
Java对象实例的锁一共有四种状态:无锁,偏向锁,轻量锁和重量锁。原始脱离框架的并发应用大部分都需要手动完成加锁释放,最直接的就是使用synchronized和volatile关键字对某个对象或者代码块加锁从而限制每次访问的.次数,从对象之间的竞争也可以实现到对象之间的协作。但是这样手动实现出来的应用不仅耗费时间而且性能表现往往又有待提升。
一、线程池结构图
二、示例
定义线程接口
6public class MyThread extends Thread {@Overridepublicvoid run() {tln(entThread()ame() + "正在执行");}}
1:newSingleThreadExecutor
10ExecutorService pool = Executors. newSingleThreadExecutor();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();//将线程放入池中进行执行ute(t1);ute(t2);ute(t3);//关闭线程池down();
输入结果:
3pool-1-thread-1正在执行pool-1-thread-1正在执行pool-1-thread-1正在执行
2:newFixedThreadPool
13ExecutorService pool = ixedThreadPool(3);Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();//将线程放入池中进行执行ute(t1);ute(t2);ute(t3);ute(t4);ute(t5);down();
输入结果:
4pool-1-thread-1正在执行pool-1-thread-2正在执行pool-1-thread-1正在执行pool-1-thread-2正在执行
3 :newCachedThreadPool
14ExecutorService pool = achedThreadPool();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();//将线程放入池中进行执行ute(t1);ute(t2);ute(t3);ute(t4);ute(t5);//关闭线程池down();
输入结果:
5pool-1-thread-2正在执行pool-1-thread-4正在执行pool-1-thread-3正在执行pool-1-thread-1正在执行pool-1-thread-5正在执行
4 :ScheduledThreadPoolExecutor
14ScheduledExecutorService pool = cheduledThreadPool(2);duleAtFixedRate(new Runnable() {//每隔一段时间就触发异常 @Override public void run() { //throw new RuntimeException(); tln("================"); }}, 1000, 2000, ISECONDS);duleAtFixedRate(new Runnable() {//每隔一段时间打印系统时间,证明两者是互不影响的 @Override public void run() { tln("+++++++++++++++++"); }}, 1000, 2000, ISECONDS)
-
linux下执行java程序的sh脚本教程
文章主要介绍了linux下执行java程序的sh脚本,仅供参考,但是设置的时候环境变量是最重要的,我就是环境变量一直不对,总是按网上查到的来,不明白怎么回事,才一直出错,其实环境变量就是你要执行的java程序所在的位置。接下来是小编为大家收集的linux下执行java程序的sh脚...
-
如何使用java
Java是一种可以撰写跨平台应用程序的面向对象的`程序设计语言。以下是小编为大家搜索整理的如何使用java,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!...
-
2017上半年计算机二级Java备考练习题及答案
练习做多了自然会形成自己的做题方法和速度,为此,今天本站小编为大家整理了以下2017上半年计算机二级Java备考练习题及答案,希望对大家有帮助!练习题一1、以下不是Java中有效的关键字。A、constB、NULLC、falseD、this本题考查的是Java的关键字。Java中常量null,fa...
-
10个经典的Java main方法面试题
Java具有简单性、面向对象、分布式、健壮性、安全性、平台的独立与可移植性、多线程、动态性等特点。以下是为大家分享的10个经典的Javamain方法面试题,供大家参考借鉴,欢迎浏览!1.不用main方法如何定义一个类?不行,没有main方法我们不能运行Java类。在Java7之前,...