多线程
Posted Blog4Matto
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。
1 线程的实现
实现Runnable接口相对于继承Thread类来说,有如下优势
适合多个相同程序代码的线程区处理统一资源的情况
可以避免由于Java单继承特性带来的局限
增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的
例如:卖5张票,继承Thread类的三个线程会各卖5张,其资源<5张票>并没有共享,实现Runnable接口的话,三个线程会一共卖5张票,实现资源共享
2 线程的状态
任何线程一般具有5种状态
创建:用构造方法新建一个线程之后,该线程就处于创建状态 如 Thread thread = new Thread()此时,已具有相应的内存空间和其他资源,但处于不可运行状态。
终止:线程调用stop()会run()执行结束后。即处于死亡状态,线程结束。
运行:当就绪状态的线程被调用并获得处理器资源时,该线程就进入了运行状态,此时会自动调用run(),run()定义了该线程的操作和功能
阻塞:一个运行状态的线程在某些特殊情况如被挂起,或需要执行耗时的输入/输出操作时,将让出CPU并暂时终止自己的执行,进入阻塞状态,阻塞时,线程不能进入队列,只有当阻塞原因消除,线程转入就绪状态排队
就绪:调用start()启动线程即处于就绪状态,该线程进入线程队列排队,等待CPU服务,已具备运行条件
3 线程的强制运行
使用join(),让一个线程强制运行,其他线程无法运行,必须等待此线程结束之后才能继续进行
4 同步和死锁:过多的同步会造成死锁
5
以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章