java并发多线程,线程的创建启动
2017-02-14 11:16
555 查看
【简述】
java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例。
每个线程的任务就是完成一定的任务,实际上就是执行一段程序流。
【创建并启动多线程的步骤(集成Thread类方式)】
1.定义继承Thread类的子类,重写run方法:run()方法就代表了线程需要完成的任务,故run()方法称为:线程执行体。
2.创建线程对象:即创建Thread子类的实例。
3.启动线程:调用线程对象的start()方法来。
【示例代码FirstThread.java】
【注意!!!】
启动线程使用 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)来设置对应的线程的名字。
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)来设置对应的线程的名字。
相关文章推荐
- [疯狂Java]多线程:创建和启动线程
- Java多线程-(4)线程的创建、启动、Runnable和Thread
- Java基础-多线程-①线程的创建和启动
- Java —— 多线程笔记 一、线程创建、启动、生命周期、线程控制
- Java基础-多线程-①线程的创建和启动
- java多线程与并发之创建线程的几种方式
- java多线程与高并发库应用(二)线程创建和定时任务Timer
- 【java多线程与并发库】---传统java多线程<2> 线程创建方式
- Java多线程与并发学习之(二):创建线程的方式
- java 多线程(3) 线程的基本概念 / 创建和启动 / run() / start()
- 初见Java多线程(二、线程的创建与启动)
- Java并发1——线程创建、启动、生命周期与线程控制
- Java并发线程--多线程的创建
- Java并发编程之线程创建和启动(Thread、Runnable、Callable和Future)
- (十)java并发编程--创建和启动线程(java.lang.Thread 、java.lang.Runnable)
- SE高阶(4):多线程(并发)—①创建启动方式和控制线程方法
- Java基础-多线程-①线程的创建和启动
- java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)
- Java基础-多线程-①线程的创建和启动
- java并发-多线程之线程的创建(2)