java基础:线程
来源:互联网 发布:php实战视频教程 编辑:程序博客网 时间:2024/06/02 11:43
线程概念
并发:就是无因果关联。即若一个系统内部发生的两个事件无因果联系,则称此两个事件是并发的。
并行:多个程序在同一时刻同时执行。在物理上必须具备多台处理机。而并发是指多个程序在同一时间段同时执行。
线程:实现了进程内部的并发执行;是进程内部可并发执行的代码段。
并发程序的不确定性:由于进程内部的各个线程共享进程的数据区,对数据区操作顺序不确定,使得数据区中的值不确定。
为什么线程的执行效率比进程的执行效率高?
处理机控制权在进程间切换时线程比进程快,why?因为进程的创建需要创建专有的数据区,而线程不用(线程只是个代码段);进程切换时需要先保存当前进程数据区,然后恢复另一个进程专有数据区。
不确定性实例:
public class Demo {public static void main(String[] args) throws Exception {System.out.print("Main开始"); TestThread T1=new TestThread("奇数线程", 1); TestThread T2=new TestThread("偶数线程", 2); T1.start();T2.start(); System.out.print("当前有"+Thread.activeCount()+"个线程"); System.out.print("Main结束");}}class TestThread extends Thread{private int d;public TestThread(String name, int d) {// TODO Auto-generated constructor stubsuper(name);this.d=d;}@Overridepublic void run() {// TODO Auto-generated method stubfor(int i=d; i<500; i+=2){System.out.print(" "+i);}System.out.print(this.getName()+"结束!");}}
语法机制
支持并发的基本语法机制主要集中在:Thread类Runnable接口Object类以及Synchronized修饰。
Thread类封装了:创建 操控 和 管理线程的手段;
Object类提供了线程通信机制;
Runable接口和Synchronized修饰则对线程应用能力进行了拓展。
线程状态和生命周期
线程状态
NEW(新建态):线程对象已经创建但还没有调用start()方法;
RUNNABLE(运行态):调用了start()方法,线程正在运行,或者正在等待处理机时间片;
BLOCKED(阻塞态):正在获取监控锁,等待进入临界资源;
WAITING(等待态):执行wait()或wait(0)之后的状态;
TIME_WAITING(有时间的等待):和WAITING相似,区别在于等待是有时间限制的;
TERMINATED(终止态):线程执行结束。
生命周期
- 线程之一:JAVA线程基础
- 线程之一:JAVA线程基础
- java线程学习基础
- Java基础 -- 线程
- Java基础 -- 线程2
- JAVA线程基础
- Java 线程基础
- Java线程基础1
- java线程基础
- java基础 线程
- Java 线程基础
- java 线程基础
- 十三、Java线程基础
- java线程基础
- java基础之线程
- JAVA线程基础(一)
- Java基础之线程
- java基础--线程总结
- java 中关于抽象类和接口的范例,通过多态中的向上转移实现
- 16进制常量比较问题
- sqlserver 差异备份与还原示例
- cocosbuilder
- sql cast()函数
- java基础:线程
- Android多媒体学习:检索MediaStore中的Video和其对应的缩略图信息
- 一个并行程序
- mybatis学习笔记---入门
- 延迟任务和周期任务的实现(ScheduledThreadPoolExecutor)
- MTP 与MSC 在FS上修改点
- 与监控有关的开源项目汇总
- ifconfig、ifup、ifdown
- 如何开机自启动程序