Java_基礎—多執行緒(匿名內部類實現執行緒的兩種方式和設定名字的方法)
阿新 • • 發佈:2018-12-26
一、為什麼要使用匿名內部類來實現多執行緒?
好處:不需要另找一個類來繼承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.開啟執行緒
}
}
二、為執行緒設定名字的兩種方式
- 通過引數設定名字
- 通過呼叫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()); //我是主執行緒
}
}