多线程学习笔记 线程基础

线程概念:

      1.每个进程至少有一个线程,

       2.  是操作系统任务调度的基本单位

       3.  同一个进程的多个线程共享IO,内存资源

       4. 现代计算机支持多个线程的并发执行

        5. 线程是有状态的

多线程学习笔记 线程基础_第1张图片

 

 

线程分类:

   用户线程

   系统线程:

线程机制:

     一个线程就是在一个线程中的一个单一的顺序控制流

    并发编程可以将程序划分成多个独立的,分离的任务

并发并行区别:

     并行: 多个任务在同一个时刻同时运行。

     串行:多个任务在同一个时刻,只有一个在执行。

     并发:多个任务在同一个时间间隔内同时执行

线程行为:

    sleep: 当前线程休眠

    yield: 当前线程让出CPU使用权

    join:当前线程等目标线程运行结束

    interrupt: 中断目标线程(仅当线程处于特俗状态时才会奏效)

 

线程阻塞:

    让当前线程阻塞 直到目标线程执行完毕

 

 
  1. package cpcn.test.me;

  2.  
  3. public class JoinA implements Runnable{

  4.  
  5. @Override

  6. public void run() {

  7. // TODO Auto-generated method stub

  8. System.out.println("Thread A start");

  9. Thread b = new Thread(new JoinB());

  10. b.start();

  11. // 让当前线程阻塞,直到线程执行完毕后,再接着执行

  12. try {

  13. b.join();

  14. } catch (InterruptedException e) {

  15. // TODO Auto-generated catch block

  16. e.printStackTrace();

  17. }

  18. System.out.println("Thread A end");

  19. }

  20. public static void main(String[] args){

  21. new Thread(new JoinA()).start();

  22. }

  23.  
  24. }


 

  1. package cpcn.test.me;

  2.  
  3. public class JoinB implements Runnable {

  4.  
  5. @Override

  6. public void run() {

  7. // TODO Auto-generated method stub

  8. System.out.println("Thread-B start");

  9. try {

  10. Thread.sleep(2000);

  11. } catch (InterruptedException e) {

  12. // TODO Auto-generated catch block

  13. e.printStackTrace();

  14. }

  15. System.out.println("Thread-B end");

  16. }

  17.  
  18. }

查看结果:

  1. Thread A start

  2. Thread-B start

  3. Thread-B end

  4. Thread A end

 

 

线程A先执行,但是使用了b.join() 会让A线程挂起B线程执行完毕后,才会去执行A

没有join 会A线程先执行完,然后再执行B

多线程学习笔记 线程基础_第2张图片

你可能感兴趣的:(多线程学习笔记 线程基础)