欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java——线程

程序员文章站 2022-04-14 10:59:16
线程与进程 1.线程:程序中单独顺序的控制流 线程本身是通过程序进行运行 线程是程序中的顺序控制流,只能使用分配给程序的资源与环境 2.进程:执行中的程序 一个进程可以包含一个或多个线程 一个进程至少要包含一个线程 3.单线程:程序中只存在一个线程,实际上主方法就是一个线程 4.多线程:多线程是一个 ......

线程与进程

1.线程:程序中单独顺序的控制流

    线程本身是通过程序进行运行

    线程是程序中的顺序控制流,只能使用分配给程序的资源与环境

2.进程:执行中的程序

    一个进程可以包含一个或多个线程

    一个进程至少要包含一个线程

3.单线程:程序中只存在一个线程,实际上主方法就是一个线程

4.多线程:多线程是一个程序中执行多个任务

     多线程目的是更好地使用cpu资源

 

线程的实现

1.继承thread类

2.实现runnable接口

 

thread类在java。lang包中定义,继承thread必须重写run()

runnable接口最后还是要调用thread执行

 

线程的状态

创建状态:准备好了一个多线程对象

就绪状态:调用start(),等待cpu进行调度

运行状态:执行run()

阻塞状态:暂停执行,可能将资源交给其他线程使用

终止状态(死亡状态):线程销毁

 

常用方法:

取得线程名称:getname()

取得当前线程对象:currentthread()   ----->currentthread().getname  获取当前线程名称

判断线程是否启动:isalive()

线程强制运行:join()

线程休眠:sleep()

线程礼让:yield()  执行到指定条件(比如说大于10),暂停当前线程,让其他线程执行

中断线程:interrupt()

线程暂停:wait()

唤醒线程:notify()       notifyall()

 

 

线程优先级:

xxxxxx.setpriority(你想要设置的优先级)

优先级范围是1~10,越大越优先(更可能最先执行,不是一定最先执行),默认为5

max_priority    10

min_priority    1

norm_priority    5

 

生命周期:

java——线程

 

 

线程池:

为什么要用线程池???

假设服务器完成一项任务所需时间为: 创建线程--t1

                    执行任务--t2

                    销毁线程--t3

if(t1+t3)远大于t2,建议使用线程池

 

线程池包括以下组成部分:

1.线程池管理器:用于创建并管理线程(创建、销毁、添加新任务)

2.工作线程:线程池中的线程,在没有任务时处于等待状态,可以循环地执行任务

3.任务接口:每个人物必须实现的接口,以供工作现场调度执行任务,

主要规定了任务的入口,任务执行后的收尾工作,任务的执行状态等...

4.任务队列:用于存放没有处理的任务,提供一种缓冲机制