1.后台线程(也是守护线程)
package com.bailing;
/**
后台线程:(守护线程)
1.如果最后只剩下一个线程了是后台线程,程序结束了,后台线程也就销毁了
*/
public class shouhuThread extends Thread {
//调用父类的方法
public shouhuThread(String name){
super(name);
}
//重写run方法
@Override
public void run() {
//设置了一个延时操作了
try {
Thread.sleep(100);
}catch (InterruptedException e){
e.printStackTrace();
}
for (int i = 0; i <100 ; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
public static void main(String[] args) {
//创建对象
shouhuThread shouhuThread = new shouhuThread("线程");
//设置守护线程
shouhuThread.setDaemon(true);
//判断当前的线程是不是有守护线程
System.out.println(shouhuThread.isDaemon());
//开启线程
shouhuThread.start();
//当这个设置为了守护线程,当线程变成了最后一个守护线程,程序马上结束了
for (int i = 0; i <100 ; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
2.Join方法 (加入线程的方法)
package com.bailing;
/**
Join线程的使用方法:
1.当线程是join方法的时候,他会等待加入的线程先执行完,然后在执行其他的线程
*/
public class JoinThread extends Thread
{
//调用父类的方法
public JoinThread(String name){
super(name);
}
@Override
public void run() {
//睡眠下
try {
Thread.sleep(100);
}catch (Exception e){
e.printStackTrace();
}
for (int i = 0; i <100 ; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
public static void main(String[] args) {
//创建对象
JoinThread joinThread = new JoinThread("Join线程");
joinThread.start();
//主线程的代码
for (int i = 0; i <100 ; i++) {
if (i == 50){
try {
//join加入的方法
joinThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}