马关县住房和城乡建设局网站,江西泰飞建设有限公司网站,便宜的国外云服务器,山东省建行企业网站1。设置线程名 继承Thread类的线程#xff0c;可以直接使用.setName()方法#xff0c;设置线程名。也可以使用构造方法#xff0c;需要注意java默认不继承构造方法#xff0c;所以需要自己调用下父类的构造方法。
public class Demo {public static void main(String[…1。设置线程名 继承Thread类的线程可以直接使用.setName()方法设置线程名。也可以使用构造方法需要注意java默认不继承构造方法所以需要自己调用下父类的构造方法。
public class Demo {public static void main(String[] args) {MyThread myThread1new MyThread(飞机);myThread1.start();MyThread myThread2new MyThread();myThread2.setName(火箭);myThread2.start();//当jvm虚拟机启动后会自动的启动多条线程其中一条是main主线程//主线程的作用是调用main方法并执行其中的代码在以前我们写的所有代码其实都是运行在main线程中Thread threadThread.currentThread();System.out.println(thread.getName());//获取优先级System.out.println(myThread1.getPriority());//线程的默认优先级都是5包括main线程}
}
public class MyThread extends Thread {Overridepublic void run() {for (int i 0; i 100; i) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//在不设置线程名的情况下线程名默认是Thread线程序号System.out.println(getName());}}//构造方法子类默认不继承所以这里需要通过super关键字调用父类Thread的构造方法给Thread设置名字public MyThread() {}public MyThread(String name) {super(name);}
} 实现runnable接口的线程可以使用.setName方法。但是不能使用构造方法因为他不像上面继承Thread类的线程他没有父类的构造方法可以调用。
public class Mythread implements Runnable {Overridepublic void run() {for (int i 0; i 100; i) {String name Thread.currentThread().getName();System.out.println(你好世界----name);}}
}
public class Demo {public static void main(String[] args) {Mythread mythreadnew Mythread();Thread t1new Thread(mythread);t1.setName(线程1);Thread t2new Thread(mythread);t2.setName(线程2);t1.start();t2.start();//获取优先级System.out.println(t1.getPriority());}
}
2. join方法 当前线程需要等待 调用join方法的线程执行完毕当前线程才能继续执行
public class Demo {public static void main(String[] args) throws InterruptedException {MyThread myThread new MyThread();myThread.start();// 在默认情况下当前线程和在当前线程添加的线程会交替执行// 使用了join方法后当前线程会等待myThread执行完毕后继续执行本线程myThread.join();for (int i 0; i 10; i) {Thread.sleep(1);//模拟主线程执行耗时System.out.println(Thread.currentThread().getName());}}
}
public class MyThread extends Thread {Overridepublic void run() {for (int i 0; i 100; i) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(自定义线程i);}}
}
执行结果MyThread执行完后才执行main线程的输出语句 3。
setDaemon
守护线程当其他非守护线程执行完毕守护线程不管是否执行完毕都会停止。
就像舔狗守护线程和女神非守护线程如果女神走了那舔狗啥都不管也走。
主线程
public class Demo {public static void main(String[] args) {NvShenThread nvShenThreadnew NvShenThread();TianGouThread tianGouThread new TianGouThread();//将舔狗线程设置为守护线程 守护线程当其他非守护线程执行完毕会自动停止守护线程//应用场景qq聊天和发送文件聊天框关闭发送文件也应当停止tianGouThread.setDaemon(true);nvShenThread.start();tianGouThread.start();}
}女神线程非守护线程
public class NvShenThread extends Thread {Overridepublic void run() {for (int i 0; i 10; i) {try {Thread.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(女神线程执行----i);}}
}
舔狗线程守护线程
public class TianGouThread extends Thread {Overridepublic void run() {for (int i 0; i 100; i) {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(舔狗线程执行----i);}}
}