java 初学多线程02

获取自定义线程的名字

1 package com.oracle.Demo03;
2 
3 public class Demo01 extends Thread{
4     public void run(){
5         //获取线程的名称
6         String str = super.getName();
7         System.out.println(str);
    }
  }

然后在main方法里调用start方法就行了

 1 package com.oracle.Demo03;
 2 
 3 public class Demo01 extends Thread{
 4     public void run(){
 5         //获取线程的名称,也可以这样用currentThread方法
 6         Thread th =Thread.currentThread();
 7         System.out.println(th.getName());
 8         
 9     }
10     
11 }

在main方法里调用start方法就行

获取main方法的线程名字

 1 package com.oracle.Demo03;
 2 
 3 public class Test {
 4 
 5     public static void main(String[] args) {
 6         //先获取当前执行的线程对象
 7         Thread m =Thread.currentThread();
 8         //输出线程对象的名称
 9         System.out.println(m);
10 
11     }
12 }

修改自定义线程的名字

 1 package com.oracle.Demo03;
 2 
 3 public class Test02 {
 4 
 5     public static void main(String[] args) {
 6         // 设置线程的名称
 7         Demo02 de =new Demo02();
 8         de.setName("myThread");  //调用setName方法,把需要改的名字传进去,然后调用
 9         de.start();
10         }
11 }

用构造函数自定义函数的名字

1 package com.oracle.Demo03;
2 
3 public class Demo02 extends Thread {
4     Demo02(String name){      //重写构造方法,把修改的名字传进来
5         super(name);
6     }
7     public void run(){}
8 }
 1 package com.oracle.Demo03;
 2 
 3 public class Test02 {
 4 
 5     public static void main(String[] args) {
 6         // 设置线程的名称
 7         //用构造方法给线程改名字赋值
 8         Demo02 de = new Demo02("阿安安");
 9         de.start();
10         System.out.println(de.getName());    
11     }
12 }

另一种创建线程的方式——Runnable

声明实现Runnable接口类,然后实现run方法,创建Thread,然后传进去

 1 package com.oracle.Demo03;
 2 
 3 public class Demo04 implements Runnable{  继承Runnable,重写run方法
 4 
 5     public void run() {
 6         for(int i=0;i<10;i++){
 7             System.out.println("Runnable"+i);
 8         }
 9     }
10 }
 1 package com.oracle.Demo03;
 2 
 3 public class Test04 {
 4     public static void main(String[] args) throws InterruptedException {
 5         Thread th = new Thread(new Demo04());  创建Thread对象,传入实现Runnable的方法,调用开启线程的方法
 6         th.start();10     }
11 }

继承Runnable的好处

1.因为Runnable是接口可以多继承,避免的java继承的单一性

2.实现Runadbe类,把run封装到Runnable中,调用start方法时,通过参数传递去找到Runnable中的run方法,线程创建对象时就可以明确线程任务

3.更加符合面向对象,一部分为线程对象,一部分为线程任务,实现Runnable接口,将线程任务封装成对象,降低耦合性。

线程的匿名内部类的使用

匿名内部类的前提必须有继承或者实现

格式是 new 父类或者接口(){

    执行程序            

    }.方法();

Tread类:

 1     public static void main(String[] args) {
 2         // 匿名内部类的前提,必须要有继承或者实现
 3         //格式 new 父类或接口(){
 4         //            要重写的方法
 5         //        }.方法();
 6         //1.继承匿名内部类
 7         new Thread(){
 8             public void run(){
 9                 for(int i=0;i<5;i++){
10                     System.out.println("Thread"+i);
11                 }
12             }
13         }.start();

2.实现Runnable接口匿名内部类

    Runnable r = new  Runnable(){
            public void run(){
                for(int i=0;i<5;i++){
                    System.out.println("Runnable"+i);
                }
            }
        };
    /*    Thread th = new Thread(r);
        th.start();*/     方法调用可以有多种
    //    new Thread(r).start();    
    }

}
原文地址:https://www.cnblogs.com/wangrongchen/p/9225180.html