java支持多线程机制。并且java已经将多线程实现了,我们只需要继承就行了。
第一种方式:编写一个类,直接继承java.lang.Thread,重写run方法
第二种方式:编写一个类,实现java.lang.Runnable接口,实现run方法
第一种:
public class MyThread extends Thread{
public void run()
}
创建线程对象
MyThread t=new MyThread();
启动线程:
t.start();
第二种:
public class MyThread implements Runnable{
public void run()
}
//创建线程对象
Thread t=new Thread(new MyRunnable());
//启动线程
t.start();
接下来是代码部分:
第一种方式:
package com.bjpowernode.javase.day27.Thread; public class ThreadTest01 { public static void main(String[] args) { //这里是main方法,这里的代码属于主线程,在主线中运行 //新建一个分支线程对象 MyThread myThread=new MyThread(); //启动线程 /* myThread.run();*///不会启动线程,不会分配新的分支栈,这种方法就是单线程工作 //start()方法的作用是:启动一个分支线程,在jvm中开辟一个新的栈空间,这段代码任务完成之后,瞬间就结束了 //这段代码的任务只是为了开启一个新的栈空间,只要新的栈空间开出来,start()方法就结束了。线程就启动成功了 //启动成功的线程会自动调用run方法,并且run方法在分支栈的栈底部(压栈) //run方法在分支栈的栈底部,main方法在主栈的栈底部。run和main是平级的 myThread.start(); for(int i=0;i<100;i++){ System.out.println("主线程--->"+i); } } } class MyThread extends Thread{ @Override public void run() { for(int i=0;i<1000;i++){ System.out.println("分支线程--->"+i); } } }
第二种方式:
package com.bjpowernode.javase.day27.Thread; /*第二种多线程方式:编写一个类,实现java.lang.Runnable接口.*/ public class ThreadTest02 { public static void main(String[] args) { //创建一个可运行的对象 MyRunnable r=new MyRunnable(); //将可运行的对象封装成一个线程对象 Thread thread=new Thread(r); //启动线程 thread.start(); for(int i=0;i<1000;i++){ System.out.println("--->主线程"+i); } } } class MyRunnable implements Runnable{ @Override public void run() { for(int i=0;i<1000;i++){ System.out.println("--->分支线程"+i); } } }