02_线程的创建和启动_继承Thread方式
【简述】
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=;i<;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=;i<;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)来设置对应的线程的名字。
02_线程的创建和启动_继承Thread方式的更多相关文章
- 03_线程的创建和启动_实现Runnable接口方式
[线程的创建和启动的步骤(实现Runnable接口方式)] 1.定义Runnable接口的实现类,并重写其中的run方法.run()方法的方法体是线程执行体. class SonThread imp ...
- 04_线程的创建和启动_使用Callable和Future的方式
[简述] 从java5开始,java提供了Callable接口,这个接口可以是Runnable接口的增强版, Callable接口提供了一个call()方法作为线程执行体,call()方法比run() ...
- Java 线程的创建和启动
Java 使用 Thread 类代表线程,所有的线程对象都必须是 Thread 类或其子类的实例.每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码). Java 使用线程执 ...
- JAVA学习笔记16——线程的创建和启动
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码).Java使用线程执行体来代表这段 ...
- Java线程:创建与启动
Java线程:创建与启动 一.定义线程 1.扩展java.lang.Thread类. 此类中有个run()方法,应该注意其用法: public void run() 如果该线程是使用独立的 R ...
- Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明
Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明 作者: Grey 原文地址: 博客园:Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明 C ...
- JavaSE---多线程---线程的创建、启动
1.概述 1.1 Java中使用Thread类表示线程: 所有的线程对象必须是Thread类 或 其子类的实例: 每条线程的作用:完成一定的任务: Java中使用run方法来封装线程执行体 ...
- Java线程的创建及启动
1.继承Thread类,重写该类的run()方法. package samTest; import java.util.Scanner; /** * Created by Sam on 2018-01 ...
- Java基础-多线程-①线程的创建和启动
简单阐释进程和线程 对于进程最直观的感受应该就是“windows任务管理器”中的进程管理: (计算机原理课上的记忆已经快要模糊了,简单理解一下):一个进程就是一个“执行中的程序”,是程序在计算机上的一 ...
随机推荐
- JavaScript 的原型对象 Prototype
在 JavaScript 中,每当定义一个对象(或函数)时候,对象中都会包含一些预定义的属性,其中一个属性就是原型对象 prototype. var myObject = function( name ...
- js获取上传文件内容(未完待续)
js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...
- DES 算法的 C++ 与 JAVA 互相加解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- cocos2d-x 纹理深入研究
转自:http://blog.csdn.net/qq51931373/article/details/9152227 1.纹理控制. 看此代码: CCSprite *pSprite = CCSprit ...
- yarn 集群部署,遇到的问题小结
版本号信息: hadoop 2.3.0 hive 0.11.0 1. Application Master 无法訪问 点击application mater 链接,出现 http 500 错 ...
- IOS笔记 #pragma mark的用法
简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick { //.. ...
- android---APN切换
android手机客户端在上传文件时,有时候会一直失败,其可能的原因是APN的设置.wap下的成功率极低,所以在进行文件上传时最好设置下 apn为net形式.下面是我在网上找的一些代码,是由wap转n ...
- Ajax防止重复提交
转:http://www.cnblogs.com/jinguangguo/archive/2013/05/20/3086925.html 谈谈防止重复点击提交 首先说说防止重复点击提交是什么意思. ...
- careercup-中等难度 17.5
17.5 写一个函数来模拟游戏. 游戏规则如下: 4个槽,里面放4个球,球的颜色有4种,红(R ),黄(Y),绿(G),蓝(B).比如, 给出一个排列RGGB,表示第一个槽放红色球,第二和第三个槽放绿 ...
- windows 7 共享,未授予用户在此计算机上的请求登录类型
刚刚重装了windows7,新下载的一个ghost版本,结果却不能共享,每次访问这台机器的共享都提示, 未授予用户在此计算机上的请求登录类型 这个情况好像是存在于win7访问win7,我用一台XP系统 ...