1、线程概念
创建好了自己的线程类之后,就可以创建线程对象了,然后通过start()方法去启动线程。注意,不是调用run()方法启动线程,run方法中只是定义 需要执行的任务,如果调用run方法,即相当于在主线程中执行run方法,跟普通的方法调用没有任何区别,此时并不会创建一个新的线程来执行定义的任务。
2、实现进程
thread类方法实现进程
import java.io.InterruptedIOException; public class xiancheng { /** * @param args */ public static void main(String[] args) { mThread you = new mThread("你"); mThread she = new mThread("她"); you.start(); she.start(); // TODO Auto-generated method stub System.out.println("主方法运行结束"); } } class mThread extends Thread { private String who; public mThread(String str) { who = str; } public void run() { for(int i =0;i<10;i++) { try { sleep((int)(1000*Math.random())); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(who+"正在运行"+i); } } }
Runnable 接口实现
引入Runnable接口的原因: 如果类本身已经继承了某个父类,由于Java不允许类的多重继承,所以就无法继承Thread类,特别是小程序。这种情况下可以创建一个类来实现Runnable接口。该方法更具有灵活性。Runnable接口只有一个方法run(),用户可以声明一个类并实现Runnable接口,并定义run()方法,将线程代码写入其中。此外由于该接口没有任何对线程的支持,所以还必须创建Thread实例,这一点通过Thread类的构造方法实现。
间接实现多重继承
private String who; public mThread(String str) { who = str; } public void run() { for(int i =0;i<10;i++) { try { Thread.sleep((int)(1000*Math.random())); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(who+"正在运行"+i); } }