多线程的创建与启动
详细说明见于代码中
package com.xiancheng.bean;
/*
* 线程的创建与启动
*
* 大致方法:通过 java.lang.Thread 类来体现
* 补充:Thread类的特性
* ①每个线程都是通过某个特定的Thread对象的run()方法来操作完成的,
* 经常把run()方法的主体称为线程体
* ②通过该Thread对象的start()方法来启动这个线程,而非直接调用run()
*
* 多线程的创建(具体方法):
* (1)方法一:通过继承于Thread的子类来创建
* ①创建一个继承于Thread类的子类
* ②重写Thread类的run() -->将此线程执行的操作声明在run()中
* ③创建Thread类的子类的对象
* ④通过此对象调用start()
* (2)方法二:https://blog.youkuaiyun.com/m0_53777734/article/details/115393633
* */
//遍历100以内(包括100)的所有的偶数
public class MultithreadingTwo {
public static void main(String[] args) {
// ③创建Thread类的子类的对象 (a:主线程来创建这个对象)
ThreadOne t1 = new ThreadOne();
ThreadOne t2 = new ThreadOne();
// ④通过此对象调用start() 调用start()方法的作用:
// ①启动当前线程
// ②调用当前线程的run()
// 注意:①不能通过直接调用run()方法的方式启动多线程
// ②要想启动多个线程,需要创建多个对象,一个对象只能调用一个start()方法
// 即一个对象只能启动一个线程(以下以举出相应例子助于理解)
t1.start(); // (b:主线程调用start()方法)
t2.start(); //此处又启动一个线程来输出100以内的所有偶数,
// 所以代码运行出来之后是两个线程同时执行的结果,
// 例:(线程一)2,(线程一)4,(线程二)2,(线程一)6,(线程二)4
System.out.println("我是主线程执行的,嘻嘻嘻");//(c:写在主线程里,这个语句由主线程执行)
}
}
// ①创建一个继承于Thread类的子类
class ThreadOne extends Thread{
// ②重写Thread类的run() -->将此线程执行的操作声明在run()中
public void run(){ // (d:for循环在分线程里执行)
for(int i=1;i<=100;i++){
if(i%2==0){
System.out.print(i+" ");
}
}
}
}
//综上:a b c在主线程里执行,d在分线程里执行 =>即多线程