线程实现、启动及区分方式
2017-12-07 21:02
337 查看
①实现方式
1、通过继承Thread类实现一个线程
2、通过实现Runnable接口实现一个线程
继承扩展性不强,java总只支持单继承,如果一个类继承Thread就不能继承其他的类了。
②怎么启动?
Thread thread = new Thread(继承了Thread的对象/实现了Runnable的对象)
thread.setName(“设置一个线程名称”);
thread.start();
启动线程使用start方法,而启动了以后执行的是run方法。
③怎么区分线程?在一个系统中有很多线程,每个线程都会打印日志,我想区分是哪个线程打印的怎么办?
thread.setName(“设置一个线程名称”); 这是一种规范,在创建线程完成后,都需要设置名称。
线程并发库
JDK5中增加了Doug Lea的并发库,这一引进给Java线程的管理和使用提供了强大的便利性。 java.util.current包中提供了对线程优化、管理的各项操作,使得线程的使用变得的心应手。该包提供了线程的运行,线程池的创建,线程生命周期的控制.
Java通过Executors提供四个静态方法创建四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行
线程池的作用?
1、限定线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃
2、线程池不需要每次都去创建或销毁,节约了资源、
3、线程池不需要每次都去创建,响应时间更快。
连接池也是一样?
1、通过继承Thread类实现一个线程
2、通过实现Runnable接口实现一个线程
继承扩展性不强,java总只支持单继承,如果一个类继承Thread就不能继承其他的类了。
②怎么启动?
Thread thread = new Thread(继承了Thread的对象/实现了Runnable的对象)
thread.setName(“设置一个线程名称”);
thread.start();
启动线程使用start方法,而启动了以后执行的是run方法。
③怎么区分线程?在一个系统中有很多线程,每个线程都会打印日志,我想区分是哪个线程打印的怎么办?
thread.setName(“设置一个线程名称”); 这是一种规范,在创建线程完成后,都需要设置名称。
线程并发库
JDK5中增加了Doug Lea的并发库,这一引进给Java线程的管理和使用提供了强大的便利性。 java.util.current包中提供了对线程优化、管理的各项操作,使得线程的使用变得的心应手。该包提供了线程的运行,线程池的创建,线程生命周期的控制.
Java通过Executors提供四个静态方法创建四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行
线程池的作用?
1、限定线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃
2、线程池不需要每次都去创建或销毁,节约了资源、
3、线程池不需要每次都去创建,响应时间更快。
连接池也是一样?
相关文章推荐
- 1多线程的概述2多线程(创建多个线程实例,并启动多个线程)的实现方式,main主方法是单线程的4多线程的实现方式5多线程模拟火车站售票出现问题7线程的声明周期
- 通过构造器启动线程的实现方式及其缺点记录。
- 启动线程的五种方式方法(通过继承Thread类或实现Runnable接口)
- Java核心内库-线程-通过实现Runnable接口的方式创建并启动线程
- 03_线程的创建和启动_实现Runnable接口方式
- 线程 创建和启动线程的两种方式 实现Runnable接口 继承Thread类 重写唯一方法run()
- 两个线程A和B,任务都是打印当前时间,要求编码实现:线程A和B同时启动后,以先A后B的方式任务交叉执行10次。
- 线程的实现及其启动方式
- 两个线程A和B,任务都是打印当前时间,要求编码实现:线程A和B同时启动后,以先A后B的方式任务交叉执行10次。
- java 启动线程三种方式
- JAVA_SE线程实现两种方式实例
- 【转】编程实现木马的ActiveX启动和注入IE的启动方式
- 实现线程的两种方式
- JAVA线程的应用实例(运用2种中断线程方式,基于实现进度条为例)
- 创建线程的两种方式(实现接口的方式请看实例分析5)
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- java 启动线程三种方式
- java线程:三种方式实现生产者消费者问题_2
- 编程实现木马的ActiveX启动和注入IE的启动方式
- 安卓启动界面源码共享,使用线程实现的!