线程和进程基本知识1

并行和并发的区别

并行
并行可以理解为同时,意味着你同时做某件事,例如同时吃饭喝水!
并发
指的是应用能够交替执行不同的任务,多线程并不是同时执行多个任务,这是一种错误的观念!!例如2个线程执行事情,就是在你肉眼看不到的情况下切换2个任务,已达到一个同时执行的效果!!这涉及到下面的一个知识点时间片轮转机制。

线程和进程的区别

进程
是执行某个程序,一旦程序被载入到内存准备执行,这就是一个进程,它意为着资源分配的基本概念,又是调度运行的基本单位,是系统中并发的执行单位。

线程
1个进程可以有多个线程,线程是进程中的执行运算的最小单位。
1个线程只能属于一个进程。多线程处理是运行一个进程下同一时刻执行多个任务。

时间片机制

简单来说就是cpu给每个线程分配cpu时间片,时间片指给每个线程的时间,由于时间片很短,所以让我们产生一种并行的效果,时间片概念是几十毫秒

java实现线程方式

1 继承Thread
2 实现Runnable接口
3 实现Callable接口 该接口可携带返回参数
继承和实现接口优缺点?
java类是单继承形式,接口可以多实现,这是面向对象知识点!

如何停止线程

1 不安全的停止(过时)
suspend() (暂停)调用线程1 不会释放已经占用的资源,2 占用的资源进入睡眠,容易进入死锁状态。同样stop也是不会保证线程资源正常释放,通常线程没有机会去释放资源,因此导致程序工作状态的不确定。
2 安全暂停(标志位暂停法)
1 interrupt()方法
方法中断一个线程,可以理解打个招呼,把线程中interrupted status状态标记为true
2 isInterrupted
判断当前线程是否处于中断状态
3 static方法中的interrupted 检测当前的状态,并且重置状态改成false

线程中断

每个线程都有一个boolean属性,用于表示线程的中断状态。中断状态初始为false;当线程通过interrupt()方法中断线程时有2种情况。
1 第一线程正处于一个低级可中断阻塞的方法,比如Thread.sleep或者Thread.join()或者Object.wait(),那么他就会抛出InterruptedException!
2 反之只设置线程中断状态。
线程中断是一种协作模式,被中断的线程不一定需要马上停止正在做的事情。中断其实是另一个线程愿意并且方便时候停止正在做的事情。

注意当捕获到InterruptedException 异常时候会自动把状态改成false
看下面的例子:
子线程代码
主线程代码
这里会形成子线程无法停止的无限循环。
当然如果子线程是守护线程的话 改块代码会被停止。

线程run和start的区别

区别如下run方法只是一个普通方法的调用 ,所以线程打印只会打印 i am main
start方法则是将其当成一个线程运行。则打印 i am BeCalled

线程池的作用

作用

1 减少资源的开销
2 减少拉每次创建线程,销毁线程
3 提高响应速度,每次请求到来之时,线程创建已经完成,所以可以直接执行任务,因此提高响应速度
4 提高线程的可管理性,线程的管理,能提高系统的稳定性,是创建和销毁的线程,线程数量等加以控制。

线程池种类

在这里插入图片描述
1 newCachedThreadPool
这是一个可以缓存的线程池,这个线程池的作用是灵活使用线程,若无可回收的线程,则新增线程!
newCachedThreadPool
里面的线程会不断复用不会重复操作
2 newFixedThreadPool

在这里插入图片描述
3 newScheduledThreadPool
在这里插入图片描述

在这里插入图片描述
4 newSingleThreadExecutor
在这里插入图片描述

死锁现象

s死锁代码
在这里插入图片描述
死锁建议
在这里插入图片描述

线程状态

线程状态:
NEW 没有调用start的状态
RUNNABLE 运行状态
BLOCKED 阻塞状态
同步阻塞 synchronized
等待阻塞 wait
WAITING 等待
TIME_WAITING 时间等待
TERMINATED 中止
线程流程图
在这里插入图片描述

线程通讯

1 wait 与sleep方法区别
wait方法是object的方法,sleep是Thread方法。当然线程本身也有wait方法。wait方法在等待过程中对象锁是放开的,而sleep则还有该对象的锁。wa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值