13.线程

13.1进程

进程:
一个应用程序的实例。当我们启动一个应用程序的时候,就创建该程序的实例,其实开启了一个进程
就会分配内存、硬盘、摄像头等等这些电脑资源。
进程是资源分配的基本单位。
线程是共用进程的资源的,这里的资源就是系统分配给进程的内存等等。

13.2线程

线程
线程:运行在进程之中。进程中可以开启线程。
一个进程中至少有一个线程,通常叫做主线程。main方法就是主线码的入口。
一个进程可以有多个线程,除主线程外,其他线程都是由主线程创建的。

13.2.1多线程

多线程好处
1.cpu利用率高
2.用户体验好
3.简化开发

多线程实现

第一种实现方法:

创建线程、开启线程java.lang.Thread
将类声明为Thread 的子类。该在类应重写Thread类的run方法
run() —线程体
start()—开启方法

Thread t=new MyThread();
t.start();//开启线程
t.run();//线程体—方法的调用—其实还是在主线程中运行的

结果:多线程交替运行,cpu交替执行

第二种实现方法:

声明实现Runnable接口的类。该类然后实现run方法

区别:
1.前者通过继承
简单
只能单继承 — 局限

2.后者通过接口,重写run方法
接口可多实现 — 灵活
实现资源(new Runnable())共享

Myrunnable s=new Myrunnable();

Thread a1=new Thread(s);
a1.start();
Thread a2=new Thread(s);
a2.start();

线程状态:
在这里插入图片描述
线程调度:
如何给多个线程分配cpu
影响(外界因素除外):

1.优先级 1~10(越大优先级越高)
默认值是5
main线程优先级5
优先级高只是代表获取cpu概率高

2.Thread.sleep(x ms);休眠
使用场景:模拟任务消耗时间

3.join();加入插队
join(x ms);插队x毫秒
谁调用谁插队
可能引发 InterruptedException 中断异常

4.yield();礼让
该代码在哪,该线程礼让
当我们都在就绪态 我抢到了cpu执行机会,我放弃,重选人执行
a。礼让成功:第二次执行时选中别人
b。礼让失败:第二次执行时依然选中自己

同步

案例
模拟买票
模拟火车站买票
ticket多个窗口在卖
多个窗口可以用多个线程来模拟卖票 --任务是一致
多商口共享10张ticketl

线程池

为什么要线程池?
1、线程池,统一管理线程,减少创建线程、销毁线程的操作,线程的使用率就高
2、定时、定期执行一定的任务

线程池使用

在包java.util.concurrent下
接口Executor 执行已经提交的Runnable任务对象
子接口Executorservicel
抽象类AbstractExecutorservice
实现类: ThreadPoolExecutor接口ScheduledExecutorService
实现类: scheduledThreadPoolExecutor
工具类Executors
创建线程池对象
static ExecutorService newcachedThreadPool()创建可缓存线程的线程池
static Executorservice newFixedThreadPool(int nThreads)创建固定线程数的线程池
static scheduledExecutorService newScheduledThreadPool(int corePoolSize)创建周期性执
的线程池
static Executorservice newsingleThreadExecutor()创建单线程的线程池

自定义线程池对象
public ThreadPoolExecutor(int corePoolsize,核心华程数
int maximumPoolsize,最大线程数long keepAliveTime,最大空闲时间TimeUnit unit,最大空闲时间使用的单位
BlockingQueue workQueue,阻塞队列,排队的队列ThreadFactory threadFactory,
RejectedExecutionHandler handler)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值