用户线程、守护线程、线程的join()方法

用户线程:
// 当一个线程没有运行完成的时候,JVM是不会主动关闭该线程的.这种线程称为用户线程
// 也就是说:只要用户线程没有运行完成,JVM是不会主动关闭的(线程默认是用户线程)

main方法:

public class Main {
	public static void main(String[] args) {
		UserThread ut = new UserThread();
	}
}
线程1:

public class UserThread extends Thread {
	public UserThread() {
		start(); // 创建好线程对象之后,该线程自动进入就绪队列
	}
	public void run() {
		for (;;) {
			System.out.println("==================================");
		}
	}
}
守护线程:

// 当JVM发现只有守护线程在运行的时候,JVM会主动的关闭守护线程,然后关闭JVM
// 也就是说:JVM是不让守护线程一直运行的

main方法:

public class Main {
	public static void main(String[] args) {
		// 线程对象创建好之后,默认的都是用户线程
		DaemonThread dt = new DaemonThread();
		// 把用户线程标记为守护线程
		dt.setDaemon(true);
		dt.start();
		try {
			Thread.sleep(1000);//若不sleep()则会直接关闭不输出
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

线程1:
public class DaemonThread extends Thread {
	public DaemonThread() {
	}
	public void run() {
		for (int i = 1; i <= 10000000; i++) {
			System.out.println("==================================i=" + i);
		}
	}
}

线程的join()方法:

// 我们在主线程中调用线程的join()方法.则主线程会被阻塞.直到t1线程运行完之后
// 主线程解除阻塞状态,重新回到就绪队列
// 换句话说:只要线程没有运行完成,则主线程永远不会执行

main方法:

public class MainThread {
	private static String[] arr = new String[50000];
	public static void main(String[] args) {
		// 我们先创建初始数组的线程 ,只有当初始化数组的线程把数组初始化完成之后,才能在主线程中打印数组元素
		InitThread t1 = new InitThread(arr);
		try {
			// 我们在主线程中调用了t1线程的join()方法.则主线程会被阻塞.直到t1线程运行完之后
			// 主线程解除阻塞状态,重新回到就绪队列
			// 换句话说:只要t1线程没有运行完成,则主线程永远不会执行
			t1.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		// 在主线程中打印数组元素
		for (int i = 0; i < arr.length; i++) {
			System.out.println("在主线程中打印数组元素:arr[" + i + "]=" + arr[i]);
		}
	}
}
线程1:

// 初始化数组的线程
public class InitThread extends Thread {
	private String[] arr;
	public InitThread(String[] arr) {
		this.arr = arr;
		start();
	}
	public void run() {
		for (int i = 0; i < arr.length; i++) {
			String str = "Hello-" + i;
			arr[i] = str;
			System.err.println("初始化线程在初始化数组元素: arr[" + i + "]=" + arr[i]);
		}
	}
}

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充;转载请注明出处!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值