java并发多线程,线程的创建启动
来源:互联网 发布:mp3伴奏提取软件 编辑:程序博客网 时间:2024/04/26 20:56
【简述】
java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例。
每个线程的任务就是完成一定的任务,实际上就是执行一段程序流。
【创建并启动多线程的步骤(集成Thread类方式)】
1.定义继承Thread类的子类,重写run方法:run()方法就代表了线程需要完成的任务,故run()方法称为:线程执行体。
2.创建线程对象:即创建Thread子类的实例。
3.启动线程:调用线程对象的start()方法来。
【示例代码FirstThread.java】
package com.Higgin.part01;//1.1定义继承Thread类的子类FirstThreadclass 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并发线程--多线程的创建
- Java基础-多线程-①线程的创建和启动
- 多线程(2)-java线程的创建与启动
- Java基础-多线程-①线程的创建和启动
- java多线程2(线程的创建方式以及启动)
- 初见Java多线程(二、线程的创建与启动)
- Java基础-多线程-①线程的创建和启动
- [疯狂Java]多线程:创建和启动线程
- Java多线程之线程创建和启动
- java多线程之创建和启动线程
- 【多线程】Java线程的创建
- java多线程-线程的创建
- 多线程01--线程的创建和启动
- Java多线程与并发学习之(二):创建线程的方式
- JAVA线程的创建与启动线程
- Java并发编程:线程、进程的创建
- 【Java并发学习】之线程的创建
- Java.sql.ResultSet 接口
- git Authorization Required及cannot open git-receive-pack解决办法
- Java常用面试题14 如何暂停线程Sleep和Wait 你能分清楚吗?
- Spring定时任务的几种实现
- 光流法原理与实现
- java并发多线程,线程的创建启动
- JVM调优总结(三)-基本垃圾回收算法
- Springboot 1.5.1整合Spring security 4.2.1
- 聊聊UI自动化
- selcet语句中having与where复用的逻辑。
- Vim(3)----高级功能
- Java前言
- JAVA从文件中读取
- Android性能优化系列 之 apk瘦身