标签:cpu 作用 style 构造函数 没有 大于 java 线程 adt
1 package com.cn.donleo.thread.join; 2 3 /** 4 * @author liangd 5 * date 2020-11-02 09:58 6 * code 7 */ 8 public class ThreadOne extends Thread { 9 /** 10 * Thread类中的join方法的主要作用就是同步, 11 * 它可以使得线程之间的并行执行变为串行执行 12 */ 13 @Override 14 public void run() { 15 System.out.println("线程1开始跑"); 16 ThreadTwo threadTwo = new ThreadTwo(); 17 threadTwo.start(); 18 try { 19 //join里面如果没有参数,则另一个线程执行完成以后再执行本线程 20 threadTwo.join(); 21 //join里面如果有参数,则表示当前线程愿意等待的时间,如果时间小于另一个线程的时间,则到时间后不需等待,直接执行 22 //表示最多给线程2两秒的时间 23 // threadTwo.join(2000); 24 } catch (InterruptedException e) { 25 e.printStackTrace(); 26 } 27 System.out.println("线程1结束跑"); 28 } 29 }
1 package com.cn.donleo.thread.join; 2 3 /** 4 * @author liangd 5 * date 2020-11-02 09:58 6 * code 7 */ 8 public class ThreadTwo extends Thread { 9 @Override 10 public void run() { 11 System.out.println("线程2开始跑"); 12 ThreadThree threadThree = new ThreadThree(this); 13 threadThree.start(); 14 try { 15 Thread.sleep(8000); 16 } catch (InterruptedException e) { 17 e.printStackTrace(); 18 } 19 System.out.println("线程2结束跑"); 20 21 } 22 }
1 package com.cn.donleo.thread.join; 2 3 /** 4 * @author liangd 5 * date 2020-11-02 09:58 6 * code 7 */ 8 public class ThreadThree extends Thread { 9 private final ThreadTwo threadTwo; 10 11 /** 12 * 通过构造函数获取线程二对象 13 * 14 * @param threadTwo 15 */ 16 ThreadThree(ThreadTwo threadTwo) { 17 this.threadTwo = threadTwo; 18 } 19 20 @Override 21 public void run() { 22 System.out.println("线程3开始跑"); 23 /* 24 线程三的作用: 25 1、将线程2保护起来 26 2、Thread.sleep(5000) 表示允许线程2执行的时间, 27 如果线程2睡眠的时间小于这个时间,则线程2运行完才运行结束线程3 28 如果线程2休眠时间大于这个时间,则到了这个时间就直接结束线程3 29 */ 30 synchronized (threadTwo) { 31 try { 32 Thread.sleep(5000); 33 } catch (InterruptedException e) { 34 e.printStackTrace(); 35 } 36 } 37 38 System.out.println("线程3结束跑"); 39 } 40 }
1 package com.cn.donleo.thread.join; 2 3 /** 4 * @author liangd 5 * date 2020-11-02 10:01 6 * code 线程加入测试类 7 */ 8 public class TestJoin { 9 public static void main(String[] args){ 10 /* 11 现在想做一个事情,就是让多线程变成单线程,就是人为控制线程的顺序 12 以前我们线程的执行顺序是由CPU自动执行,现在我们人为控制,加join,把线程加入到另一个线程 13 */ 14 ThreadOne threadone = new ThreadOne(); 15 threadone.start(); 16 } 17 }
标签:cpu 作用 style 构造函数 没有 大于 java 线程 adt
原文地址:https://www.cnblogs.com/donleo123/p/14069918.html