您的位置:首页 > 编程语言 > Java开发

java并发多线程,线程的创建启动

2017-02-14 11:16 555 查看
【简述】

java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例。

每个线程的任务就是完成一定的任务,实际上就是执行一段程序流。

 

【创建并启动多线程的步骤(集成Thread类方式)】

1.定义继承Thread类的子类,重写run方法:run()方法就代表了线程需要完成的任务,故run()方法称为:线程执行体。

2.创建线程对象:即创建Thread子类的实例。

3.启动线程:调用线程对象的start()方法来。

 

【示例代码FirstThread.java】

package com.Higgin.part01;

//1.1定义继承Thread类的子类FirstThread
class FirstThread extends Thread{
//1.2重写run方法
public void run(){
for(int i=0;i<10;i++){
//注意:当线程继承Thread类时,直接使用this.getName()即可获得当前线程的名字
System.out.println(this.getName()+"===="+i);
}
}
}

public class Demo1{

public static void main(String[] args) {
//2.创建线程对象
FirstThread t1=new FirstThread();
//3.启动线程
t1.start();
//2.创建线程对象
FirstThread t2=new FirstThread();
//3.启动线程
t2.start();

for(int i=0;i<10;i++){
//调用Thread.currentThrad().getName()可获得当前线程的名字
System.out.println(Thread.currentThread().getName()+"===="+i);
}
}
}


 【注意!!!】

启动线程使用 start()方法,不是run()方法!!永远不要调用线程对象的run()方法!!!

调用start()方法,系统会把run()方法当成线程执行体来处理。

直接调用run()方法,则run()方法会立即被执行,系统会把线程对象当成一个普通对象来处理,run()方法也变成了一个普通的方法。

 另外,直接调用线程对象的run()方法,则run()方法内不能通过getName()来获得当前执行线程的名字,而是需要使用Thread.currentThread先获得当前线程,再调用线程的getName()方法来获得线程的名字。

另外,调用了线程的run()方法之后,该线程已经不再处于新建状态,不要再次调用线程对象的start()方法,只能对处于新建状态的线程调用start()方法,否则会引发IllegalThreadStateException异常。

 

 

【运行结果】



 

【注意一:主线程勿忘】

 java程序开始运行时,程序至少会创建一个主线程,不要忘记了,本例中的main()方法的方法体就是主线程的线程执行体。

【注意二:两个读取线程名字的方法的区别】

1. Thread.currentThread():currentThread()是Thread类的静态方法,该方法是获取当前正在执行的线程的线程对象。

2.getName():该方法是Thread类的实例方法,该方法返回调用该方法的线程的名字。

【注意三:关于线程名字】

1.默认情况下,主线程的名字是main,用户启动的线程名字依次是:Thread-0、Thread-1......

2.当然,可以通过setName(String name)来设置对应的线程的名字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: