- 浏览: 32939 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
hyjasonlee:
birthday 为Date 能取数据出来吗?我用sqlite ...
利用dbutils框架简化jdbc开发
----------------------------android培训、java培训、期待与您交流!----------------------------------
感想:
看了张老师的这两个面试题解析视频有很多感想:
1.首先我要感想张老师,我们不曾经相识,竟然教会了我那么多知识,我听了了张老师的很多视频,觉得他真是一
位伟大的人,虽然他已经去世了,但是他带给我的精神会一直流传下去。
2.学习知识要有耐心和恒心
总结:
两个项目的逻辑性都很强,从中我学习到了要注重生活中的细节。
两个项目都用到了,新的知识点就是---Executors
Sun在java5中,对java线程的类库做了大量的扩展,其中线程池就是java5的新特征之一。除此之外,还
有很多与多线程编程相关的内容。
线程池的思想是一种对象池的思想,开放一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调
度由池管理器来处理。当有线程任务时,从池中取一个,执行完毕,对象归还给池。这样可以避免反复创建线程对
象所带来的性能开销,节省了系统的资源。
在Java5之前,要实现一个线程池是相当有难度的,现在Java5为我们做好了一切,我们只需要按照提供的
API来使用,即可享受线程池带来的极大便利。
Java5的线程池分好多种:固定尺寸的线程池、可变尺寸连接池等。
在使用线程池之前,必须知道如何去创建一个线程池,在Java5中,需要了解的
是java.util.concurrent.Executors类的API,这个类提供大量创建连接池的静态方法,是必须掌握的。
一、固定大小的线程池
代码
public class TestThread { public static void main(String args[]){ //创建一个可重用固定线程数的线程池 ExecutorService pool = Executors.newFixedThreadPool(4); //创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。 // ExecutorService pool = Executors.newSingleThreadExecutor(); //创建实现了runnable接口的对象 Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.execute(t5); //关闭线程池 pool.shutdown(); } } class MyThread extends Thread{ @Override public void run(){ System.out.println(Thread.currentThread().getName()+" is running..."); } }
二、单任务线程池
代码 public class TestThread { public static void main(String args[]){ //创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。 ExecutorService pool = Executors.newSingleThreadExecutor(); //创建实现了runnable接口的对象 Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.execute(t5); //关闭线程池 pool.shutdown(); } } class MyThread extends Thread{ @Override public void run(){ System.out.println(Thread.currentThread().getName()+" is running..."); } }
对于以上两种连接池,大小都是固定的,当要加入的池的线程(或者任务)超过池最大尺寸时候,则
进入此线程池需要排队等待。一旦池中有线程完毕,则排队等待的某个线程会入池执行。
三、 可变尺寸的线程池
代码 public class TestThread { public static void main(String args[]){ //创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。 ExecutorService pool = Executors.newCachedThreadPool(); //创建实现了runnable接口的对象 Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.execute(t5); //关闭线程池 pool.shutdown(); } } class MyThread extends Thread{ @Override public void run(){ System.out.println(Thread.currentThread().getName()+" is running..."); } }
四、延迟连接池
public class TestThread { public static void main(String args[]){ //创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行 ScheduledExecutorService pool = Executors.newScheduledThreadPool(2); //创建实现了runnable接口的对象 Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); //使用延迟执行风格的方法 pool.schedule(t4, 10, TimeUnit.MILLISECONDS); pool.schedule(t5, 10, TimeUnit.MILLISECONDS); //关闭线程池 pool.shutdown(); } } class MyThread extends Thread{ @Override public void run(){ System.out.println(Thread.currentThread().getName()+" is running..."); } }
五、单任务延迟连接池
public class TestThread {
public static void main(String args[]){
//创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行
ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor();
//创建实现了runnable接口的对象
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
//使用延迟执行风格的方法
pool.schedule(t4, 10, TimeUnit.MILLISECONDS);
pool.schedule(t5, 10, TimeUnit.MILLISECONDS);
//关闭线程池
pool.shutdown();
}
}
class MyThread extends Thread{
@Override
public void run(){
System.out.println(Thread.currentThread().getName()+" is running...");
}
}public class TestThread {
public static void main(String args[]){
//创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行
ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor();
//创建实现了runnable接口的对象
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
//使用延迟执行风格的方法
pool.schedule(t4, 10, TimeUnit.MILLISECONDS);
pool.schedule(t5, 10, TimeUnit.MILLISECONDS);
//关闭线程池
pool.shutdown();
}
}
class MyThread extends Thread{
@Override
public void run(){
System.out.println(Thread.currentThread().getName()+" is running...");
}
}
六、自定义线程池
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TestThread {
public static void main(String args[]){
//创建等待队列
BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(20);
//创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
ThreadPoolExecutor pool = new ThreadPoolExecutor(2,3,2,TimeUnit.MILLISECONDS,bqueue);
//创建实现了runnable接口的对象
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
//关闭线程池
pool.shutdown();
}
}
class MyThread extends Thread{
@Override
public void run(){
System.out.println(Thread.currentThread().getName()+" is running...");
try {
Thread.sleep(100L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
----------------------------android培训、java培训、期待与您交流!----------------------------------
发表评论
-
黑马程序员_javaweb(response)
2012-12-02 21:29 762----------------------------and ... -
黑马程序员_javaweb(servletcontext)
2012-12-02 21:21 803----------------------------and ... -
黑马程序员_高新技术
2012-12-02 10:08 771----------------------------and ... -
黑马程序员_基础复习八(网络编程)
2012-11-29 23:48 892----------------------------and ... -
黑马程序员_基础复习七(IO)
2012-11-28 22:59 621----------------------------and ... -
黑马程序员_基础复习六(集合)
2012-11-26 23:18 614----------------------------and ... -
黑马程序员_基础复习五(线程)
2012-11-25 18:17 717----------------------------and ... -
黑马程序员_基础复习四(异常)
2012-11-24 22:04 693----------------------------an ... -
黑马程序员_基础复习三(内部类、接口)
2012-11-23 08:22 755----------------------------and ... -
黑马程序员_基础复习二(面向对象、多态)
2012-11-19 21:06 560----------------------------and ... -
黑马程序员_基础复习一(数组、排序、面向对象)
2012-11-16 00:08 618----------------------------and ...
相关推荐
"标签"中的"交通灯_单片机 交通灯_汇编 汇编语言_交通灯"进一步强调了主题的重点,即交通灯控制系统的单片机实现和汇编语言编程。 总的来说,这个压缩包中的内容很可能是关于如何使用汇编语言在单片机上实现交通灯...
标题中的“jiaotongdeng.rar_8255 交通_8255 交通灯 程序_交通灯_交通灯 课程设计_微机接口课程设计”表明这是一个关于使用8255芯片进行交通灯控制的课程设计项目。8255是Intel公司生产的可编程并行接口芯片,常用于...
交通灯控制系统的核心是定时器模块,用于准确地计时和切换不同颜色的灯。在KEIL5环境下,开发者可能会使用嵌入式C语言编写代码,设置中断服务函数来控制定时器,当达到预定时间时,中断触发灯颜色的切换。此外,可能...
通过阅读和分析这些文件,我们可以了解如何在MaxPlusII环境下搭建和测试交通灯系统,以及如何调试和优化Verilog代码。 总结来说,“JTD.rar_verilog灯_交通灯_交通灯 verilog”是一个关于Verilog HDL语言在交通灯...
在IT行业中,交通灯控制系统是数字电路设计的一个经典案例,常用于教学和实践。本项目“JTD.zip_maxplus2_交通灯_交通灯设计_交通灯进制”聚焦于利用Maxplus2软件,通过Verilog硬件描述语言来实现一个包含左转功能的...
在本项目中,“jtd.rar_matlab 项目_交通灯_交通灯MATLAB_交通灯控制程序”是一个基于MATLAB的交通灯控制系统设计。这个项目旨在利用MATLAB强大的计算和模拟能力来模拟和控制交通灯的运行逻辑,以提高道路通行效率和...
标题中的"traffic_light_new.rar_asm 交通灯"表明这是一个关于使用汇编语言(ASM)实现的交通灯控制系统项目。交通灯在城市交通管理中扮演着至关重要的角色,它通过红绿黄三色灯来规范车辆和行人的行驶秩序,确保交通...
本压缩包文件"asdf.rar_EDA_VHDL 交通灯_交通灯_交通灯设计_分频器"主要关注的是使用VHDL进行交通灯控制系统的模拟和设计,以及相关的分频器实现。 交通灯控制系统是电子工程中的一个经典案例,它展示了如何用数字...
在本项目中,"asm.rar_8086 交通灯_8086交通灯_8086步进_交通灯 8086_交通灯8086"是一个关于使用8086汇编语言设计交通灯控制系统和步进电动机控制的实践案例。通过这个项目,我们可以学习到如何用低级别的编程语言与...
交通灯控制系统是城市交通管理的重要组成部分,它通过精确的时间调度确保道路交通的流畅与安全。在这个项目中,开发者可能使用了VHDL来定义交通灯的状态转换逻辑,如红绿黄灯的交替控制,以及可能的行人过街信号等。...
1.设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒; 2.要求黄灯先亮5秒,才能变换运行车道; 3.根据交通灯控制系统框图,画出完整的电路图。 3....
在数电课程设计中,交通灯控制系统是一个经典的项目,它能帮助学生深入理解数字电子技术的基本原理和Verilog HDL编程。"traffic2.rar_quartus_II交通灯_verilog_hdl_交通灯_数电_数电课程设计"这个压缩包文件包含了...
在这个"交通灯.rar"压缩包中,我们看到的是一个利用8086微处理器设计的交通灯控制系统的实例。这个系统的设计包括了硬件模拟部分,即使用Protues软件创建的电路图,以及软件部分,即用8086汇编语言编写的程序。 ...
01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题...
交通灯系统是城市交通管理的核心部分,它确保了车辆和行人的安全流动。这个LabVIEW程序可能包括以下几个关键组成部分: 1. **信号周期设计**:每个交通灯阶段(如红灯、绿灯和黄灯)的持续时间是可以调整的,这通常...
标题中的“ASM.rar_51 交通灯_asm 程序_交通信号灯_交通灯_模拟交通灯”表明这是一个关于51单片机的ASM(汇编语言)程序,用于实现交通信号灯的模拟控制。这个项目可能包含了对四路交通灯的管理逻辑,使它们能够按照...
标题中的“jtd.rar_交通灯_交通灯 行人”暗示了这是一个关于交通灯控制系统的设计,特别是关注行人过马路的时段控制。这个项目可能包含了硬件设计和软件编程两个方面,利用C语言编写控制程序,并通过Protues进行仿真...
在编程领域,交通灯模拟是学习和理解基本控制流程、定时和中断系统的一个经典实例。本文将深入探讨如何使用汇编语言实现一个交通灯控制系统,以及这个过程中涉及到的关键知识点。 首先,汇编语言是一种低级编程语言...
标题中的"jtd.rar_iir vhdl_jtd_交通灯 仿真_交通灯 逻辑"表明这是一个关于使用VHDL语言设计的交通灯控制系统,并且包含有IIR滤波器的相关内容,以及仿真和逻辑设计的元素。描述进一步证实了这一点,提到了设计的源...