线程

来源:互联网 发布:穿越火线m4a1千变数据 编辑:程序博客网 时间:2024/05/18 04:05

 线程

一.

1、线程基本概念

 

进程:正在运行的应用程式

线程:(Thread)是进程中的一串连续的动作。

多线程:(MultiThread)通常指多串连续动作的并发执行

        非主线程的线程都称为工作线程。

 

2、生活中的线程

做饭:煮饭的同时可炒菜。煮饭、炒菜均是线程

 

3、程序中的线程

 

4Java中的线程框架

   线程基类:SuperClass

   接口:Runnable

 

5Java中的线程模型

二.

1.进程定义?正在运行的程序

2.线程定义?进程中一串连续的操作

3.多线程的定义?进程中多串连续的操作

4.Java中线程框架?

1)Thread 类(通过此类构建线程对象) 

2)Runnable 接口(通过此接口定义线程任务)

5.Java中线程的构建?

1)new Thread(){重写run方法}(相当于new线程对象的子类)

2)new Thread(new Runnable接口的实现类){}

6.Java中线程常用方法?

1)start()          //启动线程

2)sleep()         //设置线程处于休眠状态

3)interrupt()      //中断线程

4)yeild()         //暂停当前线程,执行其他线程

5)setDeamon()   //设置线程为守护线程

6)join()         //插入,等待线程终止

7.Java线程中的几种状态?

1)新建

2)就绪

3)运行

4)阻塞

5)死亡

8. Java中线程的同步及实现方法?Synchronized关键字

1)线程同步:为了保证并发线程的线程安全

2)线程同步的实现方式:同步代码块、同步方法

 

 

 线程同步 

 生产者/消费者 

1、线程同步:借助对象监视器(同步锁互斥)实现线程交互

   案例:售票系统,懒汉式单例

2、线程通讯:借助对象监视器(同步锁)实现线程交互

1)wait():调用此方法的线程等待,并释放线程锁

2)notify()通知具备相同锁的正在等待的线程开始执行

3)notifyAll()通知所有具备相同锁、正在等待的线程开始执行

   课堂案例:生产者与消费者之间的通讯

 

线程调度(Timer类的应用)

在指定延迟之后激发一个或多个操作事件。

Timer:计时器

 

需求:每隔一秒输出一下当前时间

1)构建timer对象(查构造方法)

2)执行timer的相关方法(schedule),进行任务调度(查实例方法)

总结:使用Timer执行任务调度时,所有任务都串行执行的。

 

 线程池(Thread pool

1、它是什么?

|--->它是一个对象

|--->此对象对应内存中的一块区域

|--->此区域中允许存储若干个线程。

|--->当我们的程序需要某个线程时,可以直接从池中取,

   用完以后再放回池中。

 

2、使用线程池的目的?

 

|--->主要是提高系统的执行效率(空间效率,时间效率)

|--->线程池运用服务端或平台中居多

 

3、线程池如何构建?

 

1) Executors (对象工厂类):通过此类构建相关线程池对象

2) ExecutorService

    |--->管理线程池

    |--->执行一些异步任务(多线程并发执行)

            |--->execute(....)

            |--->submit(.....)

3) ScheduledExecutorService (允许多线程并发任务调度)

    |--->ExecutorService的子类

    |--->运行执行一些线程调度(在某些时间间隔内执行某些任务)

        |--->schedule(....)

        |--->scheduleAtFixedRate(....): 间隔固定=任务执行时间+period

        |--->scheduleWithFixedDelay(...):间隔固定=次数*delay

        |--->....

 

4) 线程池的关闭:

 

|-->shutdown(): 任务完成后关闭

|-->shutdownnow(): 立即关闭(不管任务是否完成)

----------------------------------------------------------------

 

内容总结

 

1、线程同步 (售票,单例,生产者/消费者)

2、线程通讯 (生产者,消费者)

3、任务调度(单线程任务调度):Timer

4、线程池

     |--->线程池构建

     |--->从线程池中获取线程

     |--->通过线程执行任务  (考虑多线程任务调度)

     |--->所有任务执行完以后考虑线程池的关闭

 

---------------------------------------------------------------

 

  

JavaThreadLocal类的应用


--------------------------------------------------------------------------------

1.类说明

ThreadLocalSUN公司提供的一个类,能将某个对象绑定到当前线程,也可从当前线程获取某个对象。

2.相关方法的应用

1)set方法:将对象绑定到当前线程

2)get方法:从当前线程获取某个对象

3)remove方法:从当前线程移除某个对象

0 0
原创粉丝点击