*1. 创建一个继承于Thread类的子类
* 2. 重写Thread类的run() --> 将此线程执行的操作声明在run()中
* 3. 创建Thread类的子类的对象
* 4. 通过此对象调用start():①启动当前线程 ② 调用当前线程的run()
(数据共享时线程存在安全问题)
注意:1.启动一个线程,必须调用start(),不能调用run()的方式启动线程。
2.如果再启动一个线程,必须重新创建一个Thread子类的对象,调用此对象的.start()
package main.exer; /** * @Author:lx * @Description * @Date:23:10 2020/8/3 * @Version */ public class ThreadDemo { public static void main(String[] args) { //方法一 // myThread t1 = new myThread(); // myThread01 t2 = new myThread01(); // t1.start(); // t2.start(); //方法二 // new myThread().start(); // new myThread01().start(); //方法三 new Thread(){ @Override public void run() { for(int i = 0; i<100;i++){ if (i%2 ==0){ System.out.println(Thread.currentThread().getName()+":"+i); } } } }.start(); new Thread(){ @Override public void run() { for(int i = 0; i<100;i++){ if (i%2 !=0){ System.out.println(Thread.currentThread().getName()+":"+i); } } } }.start(); } } /* 方法一 and 方法二 */ class myThread extends Thread{ @Override public void run() { for(int i = 0; i<100;i++){ if (i%2 ==0){ System.out.println(Thread.currentThread().getName()+":"+i); } } } } class myThread01 extends Thread{ @Override public void run() { for(int i = 0; i<100;i++){ if (i%2 !=0){ System.out.println(Thread.currentThread().getName()+":"+i); } } } }