随着时代的发展,时间成为了必须而且极为紧缺的东西,社会要求我们必须用最少的时间去做更多的事情。

  多线程就像日常生活中同时做几件事情一样。例如在一个注册页面,我注册完成的时候需要向用户注册的邮箱发送一个注册信息和向数据库等级新用户。这两个事情必须同时完成

这就需要使用多线程。

 

  定义线程的方法:

  一种是继承Thread类,一种是实现Runnable接口。

 

  继承Thread类定义线程

  这是一种相对于比较简单的方法,采用这种方法来实现多线程最重要的一点就是定义的线程中重写Thread类的run方法。

  范例:

    public class xiancheng1 extends Thread{

      publc void run(){

         System.out.println("通过继承Thread类定义线程");

      }

    }

 

  实现Runnable接口来定义线程

  在Runnable接口中有一个run抽象方法,在实现Runnable接口的时候,需要实现run方法,该方法就会作为一个执行线程的方法。

  对于实现Runnable接口的类,其本身并不是一个线程,只是在该类中通过实现run方法指出了线程所需要完成的任务。

  注意:如果通过实现Runnable接口的方法来定义线程,就必须借助Thread来创建线程对象。

  范例:

  xiancheng2 xc=new xiancheng2();

  Thread th=new Thread(xc);

  th.start();//启动线程2,不能多次启动同一个线程

 

  同时启动多个线程

  //定义一个线程1

     public class xiancheng1 implements Runnable{

    public void run(){

      for(int i=0;i<10;i++)

           System.out.println("@");

    }

  }

      public class xiancheng2 implements Runnable{

    public void run{

       for(int i=o;i<10;i++)

        System.out.println("$");

    }

  }

  public class shixian

  {

    public static void main(String[] args)

    {

        xiancheng1 x1=new xiancheng1();

        Thread t1=new Thread(x1);

        xiancheng2 x2=new xiancheng2();

        Thread t2=new Thread(x2);

        x1.start();

        x2.start();

    }

  }

  

  pulic final void setPriority(int i);   //线程优先级 i>0 , i<11

     public static void yield();//线程让步

   public final void join() throws InterruptedException;//线程让步,知道让步执行的线程执行完毕