Java_基础——多线程

进程:正在执行的程序

          每一个进程都有执行顺序,该顺序是一个执行路径,或者是一个控制单元

线程:进程的一个控制单元,线程控制着进程的执行

          一个进程至少有一个线程。多个执行路径,则多个线程,代码可以同时执行。

2.进程与线程的区别

参考:https://www.cnblogs.com/zhehan54/p/6130030.html

(1)进程是资源分配的最小单位,线程时程序执行的最小单位【共享数据】

(2)开销 进程大,线程小

因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进程快

(3)通信方面线程简单,进程复杂

因为进程之间互不干扰,相互独立,进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于共享数据段所以通信机制很方便。

(4)安全性 进程安全性高,线程低,因为进程之间相互独立

多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

 

3.每一次执行结果不同,多个线程都在获得cpu执行权,,cpu执行到谁,谁就执行

某一时刻,还有一个程序在执行(除多核)

cpu快速切换,看上去同时执行,多线程,随机性-----谁抢到,谁执行,执行多长时间,cpu 说的算

 

 

2-1:创建线程第一步:继承Thread类

 

                   第二步:复写Thread的run方法(Thread类中 的run方法,存储线程要运行的代码)

                   第三步:调用start方法,启动线程,调用run方法

2-2  

1.定义类实现Runnable接口

2.覆盖Runnable接口run【线程要运行的代码放入其中】的方法

3.通过Thread类建立线程对象

4.将Runable接口的子类对象作为实际参数传递给Thread类的构造函数

【因为自定义的run 方法所属的对象是Runnable接口的 子类对象,要让线程去指定指定对象的run 方法】

5.调用Thread类的start方法开启线程并调用Runnable接口子类的的run方法

【继承--------实现接口的区别】

单继承-------继承也可以实现接口,避免了单继承的局限性

定义线程时,通常用接口模式

继承Thread:线程代码存放在Thread子类方法中

实现Runnable:线程代码存在接口 的子类run方法中

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值