用户线程、守护线程、线程的join()方法
来源:互联网 发布:百度大数据交响乐 编辑:程序博客网 时间:2024/05/01 18:31
用户线程:
// 当一个线程没有运行完成的时候,JVM是不会主动关闭该线程的.这种线程称为用户线程
// 也就是说:只要用户线程没有运行完成,JVM是不会主动关闭的(线程默认是用户线程)
// 主线程解除阻塞状态,重新回到就绪队列
// 换句话说:只要线程没有运行完成,则主线程永远不会执行
// 当一个线程没有运行完成的时候,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 blocke.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()方法:
// 主线程解除阻塞状态,重新回到就绪队列
// 换句话说:只要线程没有运行完成,则主线程永远不会执行
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]);}}}
希望对你有帮助,祝你有一个好心情,加油!
若有错误、不全、可优化的点,欢迎纠正与补充;转载请注明出处!
1 0
- 用户线程、守护线程、线程的join()方法
- 线程的停止、守护线程、join()方法
- JAVA用户线程&守护线程的区别
- 线程的停止,守护进程,Join方法问题
- 线程的join方法
- 线程的join方法
- 线程的join方法
- 线程的join方法
- 线程的join()方法
- 用户线程 和 守护线程
- 用户线程与守护线程
- 守护线程和用户线程
- 用户线程和守护线程
- 守护线程和用户线程
- 用户线程和守护线程
- 15.停止线程 守护线程 join() yield()
- Java基础——线程间的通信+生产者消费者程序+守护线程+Join方法+线程优先级
- 多线程:interrupt()方法 守护线程 join()方法 及优先级
- Android 动画完全解析
- jQuery笔记之事件
- [NOIP] [组合数学] NOIP2016Day2 组合数问题
- JavaScript的引用类型
- clipboard.js——兼容各种版本浏览器的剪切板库
- 用户线程、守护线程、线程的join()方法
- unity5之导航网格寻路系统-1Bake(烘培)
- 求奖金总数
- Java基础(三)Java循环语句和各种对象的遍历之(三)
- 一个可能的C++primer Plus第164页第6题的答案
- Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty
- Linux VI编辑&退出
- JavaScript学习(2)--Array数组
- 1019. 数字黑洞 (20)