多线程学习

线程创建的三种方法

1.继承Thread类 重写run方法

2.实现Runnable接口 (此方法较为常用)

重写run方

3.实现Callable接口

重写Callable方法,需要定义一个返回值

线程的常用方法

1 sleep 使线程延迟 但并不会释放锁

2线程礼让 yield 但并不一定会成功

3.线程强制执行 join 可以理解为插队 

4.观测线程状态State 

线程状态。 线程可以处于以下状态之一:
NEW
尚未启动的线程处于此状态。
RUNNABLE
在Java虚拟机中执行的线程处于此状态。
BLOCKED
被阻塞等待监视器锁定的线程处于此状态。
WAITING
正在等待另一个线程执行特定动作的线程处于此状态。
TIMED_WAITING
正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。
TERMINATED
已退出的线程处于此状态。

5 线程的优先级priorite 

可改变线程的优先级(1~10)

6守护线程demon 

静态代理模式

 Lamda表达式的应用及其推导过程

推导过程 (省略的方式)

 

 三大不安全案例(使用synchronized后可变为安全)图为已使用

1买票案例

2.银行取钱案例 

 

 

 3.线程

但是要小心形成死锁 

 

lock锁

 

生产消费者问题

1管程法 

 

2信号灯法(类似红绿灯) 

 

线程池的创建及使用​​​​​​

背景:        经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。
思路:        提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。
好处:
        提高响应速度(减少了创建新线程的时间)
        降低资源消耗(重复利用线程池中线程,不需要每次都创建)便于线程管理(....)
        corePoolSize:核心池的大小maximumPoolSize:最大线程数
        keepAliveTime:线程没有任务时最多保持多长时间后会终止

 

 

多线程总结及回顾 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值