您的位置:首页 > 编程语言 > Java开发

线程实现、启动及区分方式

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、线程池不需要每次都去创建,响应时间更快。

连接池也是一样?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐