方法一:
/*** 如何创建多线程* 1.定义一个类继承Thread类* 2.覆盖Thread类中的run方法* 3.直接创建Thread的子类对象创建线程* 4.调用start方法开启线程并调用线程的任务run方法执行 * @author 罗摩衔那**/class Demo6 extends Thread{private String name;Demo6(String name){super(name);//调用的是父类的Thread(String name)方法,获取的是线程名//this.name=name;}public void run() {show();}public void show() {for (int i = 0; i < 10; i++) {//可以通过Thread的getName获取线程的名称 Thread-(从0开始)//获取当前线程的名字System.out.println(name+"....i"+i+" name:"+Thread.currentThread().getName());}}}public class Demo5 {public static void main(String[] args) {Demo6 d1=new Demo6("小黑");Demo6 d2=new Demo6("heima");d1.start();//开启线程线程d2.start();System.out.println("over...."+Thread.currentThread().getName());}}
方法二:
/*** 创建线程的第二种方式:实现Runnable接口* * 1.定义类实现Runnable接口* 2.覆盖接口中的run方法,将线程任务代码封装在run方法中* 3.通过Thread类创建线程对象,并将Runnable接口的对象作为Thread类的构造函数的参数进行传递* 为什么? 因为线程的任务都封装在Runnable接口子类对象的run方法中* 所以要在线程对象创建时就必须明确要运行的任务* * 4.调用线程对象的start()方法* @author 罗摩衔那**/class PiKaQiu implements Runnable{ //准备扩展PiKaQiu类的功能,让其中的内容可以作为线程的任务执行//通过接口的形式完成public void run() {show();}public void show(){for(int i=0;i<10;i++) {System.out.println(Thread.currentThread().getName()+"...."+i);}}}public class Thead_Implement {public static void main(String[] args) {PiKaQiu p=new PiKaQiu();/*** public Threa(Runnable target)* 分配新的Thread对象.* * Thread pkq=new PiKaQiu();拥有了run方法 */Thread pkq=new Thread(p);Thread pkq1=new Thread(p);pkq.start();pkq1.start();System.out.println("aa");}}