package com.javaxxz.test;
public class Demo extends Thread {
/**
* 创建线程的方式
* 方式一:
* 1、自定义一个类继承Thread类
* 2、重写Thread类的run方法,把自定线程的任务代码写在run方法中
* 3、创建Thread类的子类对象,并且调用start方法开启线程
* 一个线程一旦开启,那么线程就会执行run方法中的代码
*
* 疑问:重写run方法的目的是什么?
* 解答:每个线程都有自己的任务代码,jvm创建的主线程的任务代码就是Main方法中的所有代码。
* 自定义线程的任务代码就写在run方法中,自定义线程负责了run方法中的代码。
*/
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("自定义线程执行" + i);
}
}
public static void main(String[] args) {
// 创建了自定义线程的对象
Demo demo = new Demo();
// 调用start方法启动线程
demo.start();
for (int i = 0; i < 100; i++) {
System.out.println("Main线程执行" + i);
}
}
}
package com.javaxxz.test;
public class Demo1 implements Runnable {
/**
* 创建线程的方式
* 方式二:
* 1、自定义一个类实现Runnable接口
* 2、实现Runnable接口的run方法,把自定线程的任务代码写在run方法中
* 3、创建Runnable接口实现类的对象
* 4、创建Thread类的对象,并且把Runnable实现类的对象作为实参传递
* 5、调用Thread对象的start方法开启一个线程
*/
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName() + "执行:" + i);
}
}
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
Thread thread = new Thread(demo1,"自定义线程名称");
thread.start();
for (int i = 0; i < 100; i++) {
System.out.println("Main线程执行:" + i);
}
}
}