Java中的多线程

1  进程是一个独立的程序
2  线程  是程序中的一条执行路径
3  多线程   多个线程同时执行     每一个线程执行的任务叫做线程任务
4  真正来说 cpu 不是同时执行的多个线程,而是每一个线程都有可能抢占到cpu的时间片段
5  cpu执行时间是随机(多线程执行时随机的)
6 多线程的特点:
随机的
宏观意义上时同步的 ,微观意义上是一个一个执行的
多核除外
7 线程的创建方式有两种
1 继承Thread
不涉及到资源共享问题
2 实现Runnable 接口
设计到资源共享问题的时候
如果操作相同  共享资源类去 实现runnable接口
如果操作不相同    创建资源共享类    还需要创建不同操作的类  分别去实现runnable  将资源共享类作为 操作的属性
8 进程与线程的区别:
1> 进程是独立的程序
   线程是进程中的一条执行路径
2> 进程包含着线程的
3> 进程在整个电脑中是有独立的内存空间的,即使是关闭或者意外退出,都不会影响其他的进程
线程是进程中的一个执行路径,当线程停止或者是意外停止 ,有可能会影响到其他的线程
4> 一个进程至少要有一个线程
9 多线程的作用:
1> 执行效率高
2> 节省资源,提高资源的利用率
10 当启动起一个子线程, 这个子线程会开辟一个新的 栈内存空间 (多了一条执行路径)
11 sleep 和yield 的区别
1>  sleep 的当前线程进入到了  阻塞状态
yield 的当前线程进入到了  可执行状态
2>  sleep了当前线程 , 其他的线程可以直接去抢占cpu资源,(所有线程的机会均等)
yield 了当线程,所有的线程包括自己 都去抢占cpu资源,(优先级高的抢到的几率比较大)
3>  sleep 如果只有当前线程, 也必须等到睡眠时间结束才能够执行
yield 如果只有当前线程, yield以后立即去执行当前线程
12  启动线程有两种方式  
start()
使用start()启动线程的时候  启动了一个新的子线程,子线程开辟了新的栈空间,,可以和其他的线程抢占cpu的执行时间片段
run()
可以将run方法中的代码执行,但是没有开辟新的子线程,没有开辟新的栈空间,所有的代码都是在主线程中执行的。
13 优先级
Priority   优先级 从1-10 数字越大优先级越高,默认的优先级是5,优先级高的线程 能够抢占的cpu的次数几率大。
setPriority(int ) 设置优先级
getPriority() 得到当前线程的优先级
14  join() 加入(插队的功能)
当前线程正在执行,如果有其他的线程调用了join方法,就会执行调用join方法的线程,当前线程要进入到等待状态。
当调用了join()方法的线程执行完毕,当前线程才能执行。
15  线程的生命周期
有五种状态: 分别是  新建 , 就绪,运行,阻塞,死亡。
新建:
当创建了线程对象
就绪: 当调用了start()方法 此线程不一定能偶直接抢占到cpu资源,当没有抢到 cpu资源时,此线程是可执行状态,也就是就绪状态。
运行:  当就绪状态的的线程抢占到了cpu资源 ,就是运行状态
(运行状态的线程,被别人抢占了cpu资源,此线程就进入到了就绪状态,比如调用了yield方法)
阻塞: 当调用sleep方法的时候  此线程就进入到阻塞状态。
  当指定睡眠时间结束的时候, 此线程进入到就绪状态。
死亡: 当线程执行完毕或者是异常情况下退出,线程就进入到了死亡状态
16 结束线程的方式
1> 通过标记的方式。
2> 通过调用stop()  不推荐使用   有可能执行不到指定的代码。
3> 当进入到阻塞状态时,想打断线程,需要抛出异常来结束线程。
可以通过调用 interrupt方法来抛出异常。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值