黑马程序员_java中的多线程

------- android培训java培训、期待与您交流! ----------

(一)关于线程 

先从进程说起,进程是程序的一次动态执行过程,经历了从代码加载,执行,到执行完的过程。由于cpu具有分时机制,(与通信中的时分多址非常相似)所以每个进程都能循环获得自己的CPU时间片。

而线程和进程一样,都是实现并发的基本单位。线程是比进程更小的执行单位。一个进程在执行中会有多个线程,这些线程可以同时存在,同时运行。

Java是少数几个支持多线程的语言之一。利用线程会提高程序的运行效率

(二)java中线程的实现

(1)Thread类

java.lang包中定义了Thread类,一个类继承了Thread类,此类就称为多线程操作类。语法如下:

class 类名称 extends Thread{
属性;
方法;
public void run(){
线程主体;
}

}

(2)Runnable接口

java中也可以通过实现Runnable接口的方式实现多线程,其接口中只定义了一种抽象方法:

public void run();


class 类名称 implements Runnable{
属性;
方法;
public void run(){
线程主体;
}
}
无论用哪种方式启动多线程,最后都必须靠Thread类才能启动多线程。在Thread类中,run()方法调用的是Runnable接口中的run方法,也就是说此方法是Runable子类完成的。如果要通过Thread类实现多线程,必须覆写run()方法。

关于两者的区别:Thread的子类不适合多个线程共享资源的情况,


而实现Runnable接口,其优点有:

     (1)可以很方便的实现资源的共享,

     (2)也可以避免由于java的单继承特性带来的局限。

     (3)代码能够被多个线程共享,代码与数据是独立的。

以下是一个简单的小程序,用Runnable接口来实现多个卖票窗口出票。

class MyThread implements Runnable{	// 继承Thread类,作为线程的实现类
	private int ticket = 5 ;		// 表示一共有5张票
	public void run(){	// 覆写run()方法,作为线程 的操作主体
		for(int i=0;i<100;i++){
			if(this.ticket>0){
				System.out.println("卖票:ticket = " + ticket--) ;
			}
		}
	}
};
public class RunnableDemo{
	public static void main(String args[]){
		MyThread mt = new MyThread() ;	 // 实例化对象
		new Thread(mt).run() ;	// 调用线程主体
		new Thread(mt).run() ;	// 调用线程主体
		new Thread(mt).run() ;	// 调用线程主体
	}
};
(三)关于线程中的一些状态。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值