1.2. java多线程学习总结

线程定义

程序执行代码的一条路径,一个进程可以有多个线程。

线程的创建

1、继承Thread类,重写run方法,启动线程
2、实现Runable接口,实现run方法,创建线程,将实现类放入线程中,启动线程

线程的生命周期

创建-就绪-启动-阻塞-死亡

线程的方法

睡眠(sleep):当前线程睡眠,需要传入参数,第一参数为毫秒,第二参数为纳秒
加入(join):当前线程暂停,加入其它的线程进行处理,可设置加入时间,如果在指定的加入时间 内加入的线程未执行完成,当前线程也会继续的向下执行
等待(wait):线程等待,与睡眠类似,但是,等待的线程可以被唤醒,睡眠的线程无法被唤醒
守护线程(setDaemon):在后台运行的线程,不会单独运行,如果其他非守护线程都已经死亡,守护线程会自动退出(垃圾回收用的就是守护线程)
礼让(yield):让出cpu,理论上是让出CPU去处理其他线程,效果特别不明显
设置优先级setPriority():设置线程的优先级,1~10, 效果不明显
唤醒(notify):唤醒指定的,在等待的线程
唤醒全部(notifyAll):唤醒全部在等待中的线程

线程组和线程池

线程组

定义:线程的集合,默认情况下,所有线程都是主线程组内的线程。线程组内可包含线程组,线程组之间是形成了一个树型的结构,线程组内线程只能访问当前线程组的信息。

线程池

定义:存放线程的一个池子,是为了减少线程的的不断创建而做的一个优化。里面的线程在执行完后并不会死亡,而是进入了休眠状态,在需要使用时,再将线程唤醒。
1、可缓存线程池(newCachedThreadPool):创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程;若有工作线程,并且无空闲线程,则新建线程,创建的线程数量是没有上限的。
2、指定工作线程数量的线程池(newFixedThreadPool):创建一个指定工作线程数量的线程池。如果工作线程超出线程池的最大线程长度,则放入池队列中。FixedThreadPool是一个典型且优秀的线程池,它具有线程池提高程序效率和节省创建线程时所耗的开销的优点。但是,在线程池空闲时,即线程池中没有可运行任务时,它不会释放工作线程,还会占用一定的系统资源。
3、单线程(newSingleThreadExecutor):创建一个单线程化的Executor,即只创建唯一的工作者线程来执行任务,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。如果这个线程异常结束,会有另一个取代它,保证顺序执行。单工作线程最大的特点是可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。
4、定长线程池(newScheduleThreadPool):创建一个定长的线程池,而且支持定时的以及周期性的任务执行,支持定时及周期性任务执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值