获取自定义线程的名字
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(); } }