java学习——109.多线程
现在的操作系统均支持多线程。
多线程即将一个进程可以划分为多个线程,这样可以提高效率。
Java支持多线程,实现起来也不复杂。
有两种方式实现多线程:继承Thread类和实现Runnable接口。
今天介绍第一种,Thread类。
1、Thread类
此类为Java类库,可直接调用。它具有封装线程对象的能力,声明了创建、管理、控制线程对象的方法。其部分方法声明如下:
public class Thread extends Object implements Runnable
{
public Thread() ;//构造方法
public Thread(String name);//构造方法重载,name指定线程名
public Thread(Runnable target);//构造方法重载,target指定线程的目标对象
public Thread(Runnable target, Stringname);//构造方法重载
public void run();//描述线程操作的线程体
publicfinal String getName();//返回线程名
publicfinalvoid setName(String name) ;//设置线程名
publicstaticint activeCount();//返回当前活动线程个数
publicstatic Thread currentThread(); //返回当前执行线程对象
public Sting toString();//返回线程的字符串信息
public void start();//启动已创建的线程对象
}
2、简单示例
声明继承Thread类的奇数/偶数序列线程。
其完整代码如下:
public class ThreadLearn extends Thread{
int start,end;//序列的起点,终点
public ThreadLearn(String s,int start,int end) {
super(s);//继承Thread类,调用其带参的构造方法,为线程指定名字
this.start=start;
this.end=end;
}
public void run() {//实现线程类的方法,此方法由线程调用,有几个线程就可以调用多少次
System.out.println("当前线程是:"+Thread.currentThread().getName());//调用线程类的方法,返回当前线程名
while(start<=end) {
for(int i=1;i<=10;i++) {
System.out.print(start+" ");
start=start+2;
}
System.out.println();
}
}
public static void main(String args[]) {
System.out.println("当前线程是:"+Thread.currentThread().getName());//调用线程类的方法,返回当前线程名
Thread odd=new ThreadLearn("奇数",1,50);//创建线程,名字为“奇数线程”,即会输出1-50之间的奇数
Thread even=new ThreadLearn("偶数",2,50);//创建线程,名字为“偶数线程”,即会输出2-50之间的奇数
odd.start();//线程启动
even.start();//线程启动
}
}
其运行结果如下:

再运行一次,其运行结果如下:

仔细看这两个运行结果,会发现,其输出结果并不一样。
但输出的数字是一样的。
因为线程是并发执行的,并不会等一个线程执行完了另一个线程才开始执行。
本例中,main方法中创建了两个线程,odd和even,这两个线程在执行的时候是同时进行的,所以每一次运行时,数据的输出顺序会不一样,但输出结果数据肯定是一样的,只是顺序会变化 。
另,在每一个程序中,都会有一个默认的main线程,在程序开始执行时,都是执行此线程。