Java笔记(四)线程

Java中的线程
一个程序的执行是为进程,程序中单个顺序的流控制成为线程。
一个进程可以包括多个线程,他们共享内存,也就是多个线程访问同一对象。对于CPU,他们以并发或者时间片的方式来分享CPU。

下面来介绍创建线程的两种方法:
第一种是通过继承Thread类创建线程

class MyThread extends Thread {
	public void run(){
		for(int i = 0;i<100;i++) {
			System.out.print(" " +i);
		}
	}

第二种是通过向Thread()构造方法传递Runnable对象来创建线程

class MyTask implements Runnable {
	public void run(){ .... }
	}
Thread thread = new Thread(mytask);
thread.start();

其实还有一种匿名类来实现Runnable

new Thread(){
	public void run(){
		...
	}
}.start();

下面来说明一下线程的状态与生命周期:

在这里插入图片描述
我们在创建线程以后呢,调用start方法来跑这个线程,但他只是进入就绪状态,并没有开始运行,当系统空闲的时候会选择开始线程,运行过程中要是遇到IO操作等就会进入阻塞状态,运行完成后会终止。

线程还能分为两种,一种是普通线程,另一种是后台线程
上面我们所创建的都是普通线程,线程不结束,程序就不会再结束。而后台线程(Daemon)是等到所有普通线程都终止以后,他会自动终止,垃圾回收就是后台线程。使用setDaemon(true);来设置后台线程。

Java的同步
Java引入了对象互斥锁,来保证共享数据操作的完整性。
每个对象都对应于一个monitor(监视器),包含一个标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。

使用**wait()可以释放对象锁,使用notify()或notifyAll()**可以让等待的一个或所有线程进入就绪状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值