java基础:线程


线程概念

并发:就是无因果关联。即若一个系统内部发生的两个事件无因果联系,则称此两个事件是并发的。

并行:多个程序在同一时刻同时执行。在物理上必须具备多台处理机。而并发是指多个程序在同一时间段同时执行。

线程:实现了进程内部的并发执行;是进程内部可并发执行的代码段。

并发程序的不确定性:由于进程内部的各个线程共享进程的数据区,对数据区操作顺序不确定,使得数据区中的值不确定。

为什么线程的执行效率比进程的执行效率高?

处理机控制权在进程间切换时线程比进程快,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 stub
		super(name);
		this.d=d;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=d; i<500; i+=2){
			System.out.print(" "+i);
		}
		System.out.print(this.getName()+"结束!");
	}
}


语法机制

支持并发的基本语法机制主要集中在:ThreadRunnable接口Object类以及Synchronized修饰。

Thread类封装了:创建 操控 和 管理线程的手段;

Object类提供了线程通信机制;

Runable接口和Synchronized修饰则对线程应用能力进行了拓展。

线程状态和生命周期

线程状态

NEW(新建态):线程对象已经创建但还没有调用start()方法;

RUNNABLE(运行态):调用了start()方法,线程正在运行,或者正在等待处理机时间片;

BLOCKED(阻塞态):正在获取监控锁,等待进入临界资源;

WAITING(等待态):执行wait()wait(0)之后的状态;

TIME_WAITING(有时间的等待):和WAITING相似,区别在于等待是有时间限制的

TERMINATED(终止态):线程执行结束。

生命周期


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值