java多进程 -CD7-孙鑫-(3)-从实现Runnable接口来实现多线程

来源:互联网 发布:魏则西的回答 知乎 编辑:程序博客网 时间:2024/05/16 04:37

本节主要是从实现Runnable接口来实现多线程

class MultiThread{    public static void main(String[] args)    {        MyThread myThread = new MyThread();        //将类对象作为参数传给Thread,然后再调用Thread的start()        new Thread(myThread).start();        //设置为后台线程        //myThread.setDaemon(true);        //设置优先级        //myThread.setPriority(Thread.MAX_PRIORITY);        //myThread.start();        int index = 1;        while(true)        {                //if(index++ == 1000)                //break;                //获取当前的线程并且获取它的名字        System.out.println("main方法所在的线程的名字:" + Thread.currentThread().getName());           }    }}class MyThread implements Runnable//extends Thread{    //run方法是线程的入口函数    public void run()    {        while(true)        {            System.out.println(Thread.currentThread().getName());               //将当前线程暂停            //yield();        }       }   }

总结:通常不需要修改线程类中除了run方法外的方法就使用实现Runnable方法(方法二)来实现多线程程序。
使用实现Runnable方法好处有两条

  • 如果你的MyThread类已经继承了一个类,那么java中不允许多继承,这样让你的MyThread实现一个Runnable接口正好啊。
  • 如果同一个对象创建多线程那么共享一个数据成员index
class MultiThread{    public static void main(String[] args)    {        MyThread myThread = new MyThread();        //如果创建多个线程但是是同一个对象,那么他们共享一个index        new Thread(myThread).start();        new Thread(myThread).start();        new Thread(myThread).start();        new Thread(myThread).start();        new Thread(myThread).start();        //设置为后台线程        //myThread.setDaemon(true);        //设置优先级        //myThread.setPriority(Thread.MAX_PRIORITY);        //myThread.start();        //int index = 1;        while(true)        {                //if(index++ == 1000)                //break;                //获取当前的线程并且获取它的名字        System.out.println("main方法所在的线程的名字:" + Thread.currentThread().getName());           }    }}class MyThread implements Runnable//extends Thread{    int index = 0;    //run方法是线程的入口函数    public void run()    {        while(true)        {            System.out.println(Thread.currentThread().getName() + ":" + index++);               //将当前线程暂停            //yield();        }       }   }

程序运行结果

0 0
原创粉丝点击