多线程

线程的简介

程序:一组独立功能的静态的计算机指令。

进程:是一次程序动态的运行过程,它有就绪,阻塞,运行等状态。

进程:向系统申请资源的独立单位。

案例:开了一个扣扣,就是开了一个进程,再打开一个迅雷,又开了一个进程,那我们在扣扣上可以传输文字,语音,广告弹出,理解为开了一个线程,换句话理解就是线程是任务。一个进程可以管理多个线程,进程里面会至少包括一条线程。通俗的讲,进程是领导,线程是员工,进程本身不执行,只是为线程提供运行环境申请内存空间。

多线程:

(1)  一个进程里面同时进行多个任务。

(2)  一个进程里面至少有一个线程。

(3)  开启多个线程是为了同时执行多个任务,也是同时执行多部分代码。

利弊:

好处:解决了多任务同时执行的问题。

弊端:线程切换花费额外的资源,同时切换也是一个耗时的步骤。

4.2 实现线程的方式

第一种方式:

如何创建线程:

(1)  将类声名为Thread的子类

(2)  然后这个子类重写run方法

(3)  创建子类

(4)  开启线程

一般来讲,耗时的方法都不放在主线程里

 

线程的常用属性:name-获取线程的的名字,默认为Thread-x

这种方式开启多线程,要求该类不能在继承其他的父类,因为java是单继承,但我们可以用接口的方式来扩展。

第二种方式:

创建一个类,实现runnable接口,实现了run方法,创建线程Thread(myRunmable),开启。



一般我们都是使用第二种方法创建线程

注意:线程的开启是用start,而不是用run,如果直接使用run,那程序的执行就和函数调用没有区别,一直在调用主线程。

4.3 线程调度

线程的优先级:

调整线程的优先级只是提高cpu执行这条线程的概率,并不是执行完毕再去执行另外一个线程。

 

线程让步:


线程插队:


线程安全:

出现线程安全的条件

(1)  多个线程同时访问共享资源(共享数据)

(2)  操作共享数据的代码有多条

解决办法:

对于不能同步执行的代码,我们只要保证当有一个线程执行的时候,其他线程不能进入执行。

类似公共厕所,进入之后先上锁,离开的时候开锁,这个就保证里面只有一个人在使用。

Java中提供我们一种“同步代码块”可以解决这个问题

好处:解决了线程的安全问题

坏处:相对降低了效率,因为每次都要去判断是否有同步锁。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值