/* 创建线程的第一种方法:继承Thread类 步骤: 1、定义类继承Tread类 2、重写Thread类中run方法 3、调用Thread的start()方法,有两个作用:启动线程、调用run方法 为什么重写run方法? Thread类用于描述线程,该类的一个功能就是用于存储线程要运行的代码,该代码存储功能就是run方法, 存储要运行的代码。开启线程的目的就是运行指定的代码, */ class MyThread extends Thread { public void run() { for(int i=0;i<60;i++) System.out.println("run:" + i); } } class ThreadDemo { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); //myThread.run(); // 就是相当于对象调用方法,线程并没开启,而是由主线程进行执行,所以输出时规律的。 for(int i=0;i<60;i++) System.out.println("Hello world:"+i); } } /* 出现二者交替出现的结果:原因:是由于main函数的主线程和新建的myThread线程相互征战cpu导致的,就是形成多线程现象。 但是在某一具体时刻,只能有一个线程 占用cpu,多线程就是互相占用cpu资源,这就是多线程的一个特性:随机性。谁抢到谁执行。 */