首页 > 编程语言 > 详细

javase线程(线程与进程、线程的实现方式、线程并发库、线程池)

时间:2020-03-11 21:48:18      阅读:64      评论:0      收藏:0      [点我收藏+]

1、线程与进程的区别

进程:

(1)拥有资源的基本单位。

(2)可独立调度和分派的基本单位。

  (3)  开销较大

线程:

(1)线程本身拥有少量资源,它可以共享所属进程的资源。

(2)独立运行和调度的基本单位。

(3)轻量级的进程,开销小

2、线程与进程的关系

一个进程中同时存在几个执行体。单线程是按照函数的顺序执行,多线程是多段代码同时交替运行。CPU的一个核,在某一时刻只能执行一个线程,CPU在多个线程之间快速地切换(线程的调度算法)。

3、线程的实现方式

(1)继承Thread接口:

class Mythread extends Thread {
    public void run(){
         System.out.println("我是一个线程!!");
    }
    public static void main(String args[]){
        Thread thread=new Thread(new Mythread());
        thread.start();//启动,执行的是run方法
    }
}

(2)实现Runnable接口:

class Mythread implements Runnable {
   public void run(){
       System.out.println("线程执行了!!");
   }
   public static  void  main(String args []){
       Thread thread=new Thread(new Mythread());
       thread.start();
   }
}

(3)两种实现方式的对比:

以实现Runable接口的方式创建线程比继承Thread类有很大的优越性,因为类不能多重继承,即一个类只能继承一个类,那么如果该类已经继承了一个类,就不能实现多线程了,但是可以通过实现Runable接口的方式实现多线程。

4、线程并发库

(1)简介:

JDK5中增加了Doug Lea的并发库,这一引进给Java线程的管理和使用提供了强大的便利性,java.util.current包中提供了对线程优化、管理的各项操作,使得线程的使用变得得心应手,该包提供了线程的运行,线程池的创建,线程生命周期的控制。

(2)线程池:

分类:

newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需求可灵活回收空闲线程,若无可回收,则新建线程
newFixedThreadPool:创建一个定长线程池,可控制线程的最大并发数,超出的线程会在线程池中等待。
newScheduleThreadPool: 创建一个定长线程池,支持定时及周期性任务处理
newSingleThreadScheduledExecutor:创建一个单线程化的线程池,他只用唯一的工作栈来执行任务

使用:

class Mythread implements Runnable {
   public void run(){
       System.out.println(Thread.currentThread().getName());
   }
   public static  void  main(String args []){
           ExecutorService executorService = Executors.newFixedThreadPool(3);// ?
           // Executors:线程池创建工厂类,调用方法返回线程池对象
           executorService.submit(new Mythread());
           executorService.submit(new Mythread());
           executorService.submit(new Mythread());
       }
}
pool-1-thread-1
pool-1-thread-2
pool-1-thread-3

好处:

限制线程的个数,不会导致由于线程过多导致系统运行缓慢,甚至崩溃

节省了资源:我们用两种方式创建的线程,在使用后都会被销毁,频繁地创建和销毁会造成时间和资源的浪费。线程池是一个能够容纳多个线程的容器,里面的线程可以反复使用。

 

javase线程(线程与进程、线程的实现方式、线程并发库、线程池)

原文:https://www.cnblogs.com/zhai1997/p/12459194.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!