package com.Demo01;
/**
* 多线程的创建,方式一,继承Thread类
* 1.创建一个继承于Thread类的子类
* 2.重写Thread类的run()-->将此线程执行的操作声明在run()中
* 3.创建Thread类的子类对象
* 4.通过此对象调用start()
*
* 例子:遍历100以内所有的偶数
*
* @author raoyun
* @creat 2020-12-08-14:40
*/
//1.创建一个继承于Thread类的子类
class MyThread extends Thread{
//2.重写Thread类的run()
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
}
public class ThreadTest {
public static void main(String[] args) {
//3.创建Thread类的子类对象
MyThread myThread = new MyThread();
//4.通过此对象调用start():1.启动当前线程 2.调用当前线程的run()
myThread.start();
//问题一:我们不能通过直接run()的方式启动线程
//问题二:再启动一个线程,遍历100以内的偶数
//再创建一个对象就可以实现
MyThread myThread1 = new MyThread();
myThread1.start();
//如下操作仍然还是在main线程中执行的
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName()+":"+i+"************main()*********");
}
}
}
}
package com.Demo01;
/**
* 创建多线程的方法二:实现Runnable接口
* 1.创建一个实现了Runnable接口的类
* 2.实现类去实现Runnable中的抽象方法:run()
* 3.创建实现类的对象
* 4.将次对象作为参数传递到Thread类的构造器中,创建Thread类的对象
* 5.通过Thread类的对象调用start()
*
* @author raoyun
* @creat 2020-12-09-16:55
*/
//1.创建一个实现了Runnable接口的类
class MyThread3 implements Runnable{
//2.实现类去实现Runnable中的抽象方法:run()
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
}
public class ThreadTest1 {
public static void main(String[] args) {
//3.创建实现类的对象
MyThread3 myThread3 = new MyThread3();
//4.将次对象作为参数传递到Thread类的构造器中,创建Thread类的对象
Thread thread = new Thread(myThread3);
thread.setName("线程一");
thread.start();
//再启动一个线程,实现相同的功能
Thread thread1 = new Thread(myThread3);
thread1.setName("线程二");
thread1.start();
}
}