博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 多线程
阅读量:7015 次
发布时间:2019-06-28

本文共 677 字,大约阅读时间需要 2 分钟。

hot3.png

Thread和Runnable区别

  • Thread实现了Runnable接口,在执行多线程之前还分配了CPU资源,检查线程是否启动等事情,然后再执行线程。
  • Runnable适合多个相同程序代码的线程去处理同一个资源。
  • Runnable接口可以避免Java单继承的局限。
  • Runable增加了程序的健壮型,代码能够被多个线程共享,数据和代码是独立的。

线程状态

五种状态:创建,就绪,运行,阻塞,终止。

线程使用start()后不会立刻启动,而是处于就绪状态,等待CPU调度后才开始。


进程和线程的区别

  • 线程在进程基础上划分。
  • 线程消失,进程还继续。进程消失,线程结束。
  • 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。
  • 线程是进程的实体,是CPU调度和分派的基本单位,比程序更小的能独立运行的基本单位。

多线程实现的两种方式

  • 继承Thread
  • 实现Runnable接口

线程启动

通过start()方法完成,需要进行CPU调度,调用start()实际上是run()方法。


线程终止

  • stop(),容易有问题,已经过时
  • volatile变量当作控制条件,控制线程执行。
  • interrupt来使处于sleep() wait()等状态的线程终止。
  • 用Future的cancel方法也可以终止线程。

多线程中建议使用Runnable接口实现,这样可以避免由单继承所带来的开发局限,使用Runnable接口可以达到资源共享的目的。


转载于:https://my.oschina.net/u/1046919/blog/1539271

你可能感兴趣的文章
Linux操作系统68问(下)
查看>>
Windows2008R2跨林迁移用户、计算机(6)
查看>>
Linux怎么添加图形界面组件
查看>>
POJ_1001 Exponentiation
查看>>
邮件附件在线预览——HTML Filter
查看>>
PC桌面右下方QQ托盘图标
查看>>
jenkins执行启动java程序后,会杀掉程序的解决方法
查看>>
日志审计
查看>>
OVER(PARTITION BY)函数大全
查看>>
Cookie/Session机制详解
查看>>
RocketMQ
查看>>
如何重命名DB- How to Rename DB_NAME with NID?
查看>>
一种真正意义上的Session劫持
查看>>
session 登录中的管理
查看>>
升值加薪的人中为什么么有你???
查看>>
MySQL数据表所有操作命令
查看>>
Linux 之 iptables
查看>>
更改CloudStack中KVM平台的Windows虚拟机默认磁盘类型为VirtIO
查看>>
Tomcat启动脚本
查看>>
Exchange Server 2013 公网发布疑难解答
查看>>