小白学JAVA《二十一》--- 多线程的管理方式以及线程池

一、线程的管理
1.更改优先级:Priority(默认5,最低一。最高十,为线程被CPU选中概率)
2.返回线程名称 getName
3.Thread类的sleep()将某一根线程状态变成“休眠”状态
4.yield暂停
5.join 线程一旦定义,默认为线程的异步调用,但是一旦在某一个线程中对例外的线程执行join(),将会使线程的异步调用,转换为同步调用。调用线程将会处于“等待”状态,直到被调用的线程,代码执行完毕之后调用线程才继续执行,如果join(10)方法中,传入参数,参数代码同步时间,超过这个时间之后,同步将重新转换为异步 .但是如果参数是0,代表调用线程,将会无限期等待被调用线程的执行,直到被调用线程执行完毕。0=不写
6.interrupt 中断线程
7.线程同步,synchronized(),括号只能放对象可以放自己也可以放其他对象,可以定义在方法内部,作为同步块出现。如果用于修饰对象,表示开启对象本身的对象锁,当多根线程同时访问该对象时,谁抢的了该对象锁,谁就可以访问该对象。内部表示需要锁定的代码
synchronized也可以用来修饰成员方法,同样开启“自身对象”的对象锁。当多根线程同时访问对象时,谁抢的了该对象锁,谁就可以访问同步块对象
synchronized还可以修饰累方法,修饰类方法的时候,此时开启的CLASS对象锁,当多根线程同时访问对象时,谁抢的了该CLASS对象锁对象锁,谁就可以访问同步块对象
当synchronized修饰类对象的时候,此时表示开启CLASS对象的对象锁,当多根线程同步访问同步块时,谁抢的了该CLASS对象的对象锁,谁就可以访问同步块代码
如何选择使用同步块或者同步方法:推荐选择同步块
(1)方法执行时间一定比某一段代码执行时间要长的多,
(2)同步方法开启的对象锁,只能是本对象的,如果需要开启其他对象的则不适用
8.wait睡眠
9.notify 唤醒处于等待状态的线程(唤醒的一定是调用该方法,处于等待状态下的线程)
10.notifyAll 唤醒所有处于等待状态的线程

二、线程池
1.newCachedThreadPool创建一个可缓存线程池,如果线池长度招过处理需要,可灵活回收空闲线程,若无可回收,则新建线程
2.newFixedThreadPool创建一个定长线程池,可控制线程最大并发数线程会在队列中等待
3.newscheduledThreadPool创建一个定长线程池,支持定时及周期性任务执行
4.newSingleThreadExecutor创建一个单线程化的线程池,它正在联网识别并翻译来执行任务,保证所有任务按照指定顺序(FIFO, LIFO,优先级)执行。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值