Java_基础—多线程(匿名内部类实现线程的两种方式和设置名字的方法)

来源:互联网 发布:网络电话回拨软件 编辑:程序博客网 时间:2024/05/21 16:55

一、为什么要使用匿名内部类来实现多线程?

好处:不需要另找一个类来继承Thread类和实现Runnable接口啦,只需要new Thread()或者new Runnable() 后,重写里面的run()方法就可以了。

package com.soar.thread;public class Demo4_Thread {    public static void main(String[] args) {        //匿名内部类通过Thread开启多线程        new Thread(){                               //1.继承Thread类            public void run(){                      //2.重写run()方法                for(int i=0; i<100; i++){           //3.将要执行的代码写在run()方法中                    System.out.println("aaaaaaa");                }            }        }.start();                                  //4.开启线程        //匿名内部类通过Runna开启多线程        new Thread(new Runnable(){                  //1.将Runnable的之类对象传递给Thread的构造方法            public void run(){                      //2.重写run()方法                for(int i=0; i<100; i++){           //3.将要执行的代码写在run()方法中                    System.out.println("bb");                }            }        }).start();                                 //4.开启线程    }}

二、为线程设置名字的两种方式

  1. 通过参数设置名字
  2. 通过调用setName来设置名字
package com.soar.threadmethod;public class Demo1_Name {    public static void main(String[] args) {        //argsSetName();    //通过传入参数,给线程改名        Thread t1 = new Thread(){            public void run(){                //this.setName("张三");                System.out.println(this.getName()+"   aaaaa");  //张三   aaaaa            }        };        Thread t2 = new Thread(){            public void run(){                //this.setName("李四");                System.out.println(this.getName()+"   bb");     //李四   bb            }        };        t1.setName("张三");        t2.setName("李四");        t1.start();             //张三   aaaaa        t2.start();             //李四   bb    }    //通过传入参数,给线程改名    public static void argsSetName() {        new Thread("高飞"){            public void run(){                System.out.println(this.getName()+"    aaaa");  //高飞    aaaa            }        }.start();        new Thread("高飞飞"){            public void run(){                System.out.println(this.getName()+"    bb");    //高飞飞    bb            }        }.start();    }}

三、获取当前线程的对象

在匿名Runnable中通过使用
Thread.currentThread(), 主线程也可以获取

package com.soar.threadmethod;public class Demo2_CurrentThread {    public static void main(String[] args) {        new Thread(){            public void run(){                System.out.println(getName()+"   aaaa");    //Thread-0   aaaa            }        }.start();        new Thread(new Runnable(){            public void run(){                //Thread.currentThread()获取当前正在执行的线程                System.out.println(Thread.currentThread().getName()+"  bb");    //Thread-1  bb            }        }).start();        //System.out.println(Thread.currentThread().getName()); //main        Thread.currentThread().setName("我是主线程");        System.out.println(Thread.currentThread().getName());   //我是主线程    }}
阅读全文
0 0
原创粉丝点击