1.进程?线程?多线程?

  进程就是正在运行的程序,他是线程的集合.

  线程是正在独立运行的一条执行路径.

  多线程是为了提高程序的执行效率.
2.同步?异步?

  同步: 单线程

  异步: 多线程

3.守护线程?非守护线程(用户线程)?

  守护线程: 和main相关,和主线程一起销毁.(例如:gc线程,垃圾回收机制,主要回收主线程垃圾,和主线程一起销毁)

  非守护线程: 也叫用户线程,也就是用户自己创建的线程,和主线程没有一点联系,互补干扰,也就是说,主线程挂了,用户线程也不会挂

  非守护线程转换为守护线程: 线程对象.setDaemon(true);

4.线程的几种状态:

  新建状态:new Thread()

  就绪状态:等待cpu的调度,调用start方法

  运行状态:cpu开始执行,调用run方法

  阻塞状态:调用sleep方法或wait方法,等待cpu的再次调度

  死亡状态:run方法执行完成或者调用stop方法

5.多线程中的方法join()

  Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。

  A线程代码内部中调用B.join();则A会放弃CPU的执行权,等到B执行完之后再执行;

  A线程代码内部中调用B.join(100);则A会放弃CPU的执行权100毫秒,然后再执行;

  join方法必须在线程start方法调用之后调用才有意义。

  1. package com.moti.test;
  2. /**
  3. * join方法的使用:
  4. * 现在有三个进程,让3号进程在1号进程执行后再执行,2号进程在3号进程执行完再执行
  5. * @author Moti
  6. * @Time 2019年7月7日
  7. */
  8. public class Demo {
  9. public static void main(String[] args) throws Throwable {
  10. Thread thread1 = new Thread(()-> {
  11. for (int i = 0; i < 3; i++) {
  12. System.out.println("1号线程"+i);
  13. }
  14. });
  15. Thread thread3 = new Thread(()-> {
  16. try {
  17. thread1.join();
  18. } catch (InterruptedException e) {
  19. e.printStackTrace();
  20. }
  21. for (int i = 0; i < 3; i++) {
  22. System.out.println("3号线程"+i);
  23. }
  24. });
  25. Thread thread2 = new Thread(()-> {
  26. try {
  27. thread3.join();
  28. } catch (InterruptedException e) {
  29. e.printStackTrace();
  30. }
  31. for (int i = 0; i < 3; i++) {
  32. System.out.println("2号线程"+i);
  33. }
  34. });
  35. thread1.start();
  36. thread2.start();
  37. thread3.start();
  38. }
  39. }

  

进程?线程?多线程?同步?异步?守护线程?非守护线程(用户线程)?线程的几种状态?多线程中的方法join()?的更多相关文章

  1. Python并发编程之同步\异步and阻塞\非阻塞

    一.什么是进程 进程: 正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 进程和程序的区别: 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程. 需要强调的是:同一个程序执行两次,那也 ...

  2. 进程(并发,并行) join start 进程池 (同步异步)

    一.背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有 ...

  3. 一个自定义的c++错误类 和 同步异步、阻塞非阻塞(区别简述)

    一个例子,自定义exception 继承std::exception 1 class _oct_udp_api_export_ udp_err : public std::exception 2 { ...

  4. Python--day37--多进程中的方法join()

    1,多进程中的方法join()的作用: 感知一个子进程的结束,将异步的程序改为同步 #join() import time from multiprocessing import Process de ...

  5. Python之路(第三十六篇)并发编程:进程、同步异步、阻塞非阻塞

    一.理论基础 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的. 即使可以利用的cpu只有一个(早期的 ...

  6. 操作系统介绍-操作系统历史,IO,进程的三态,同步异步阻塞非阻塞

    1.操作系统历史 2.进程,IO,同步异步阻塞非阻塞 操作系统历史: 手工操作: 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 手工操 ...

  7. c#中多线程同步Lock(锁)的研究以及跨线程UI的操作

    本文只针对C#中,多线程同步所用到的锁(lock)作为研究对象.由于想更直观的显示结果,所以,在做demo的时候,就把多线程通过事件操作UI的代码也写了出来,留作备忘和分享吧. 其实多线程的同步,使用 ...

  8. c#中多线程同步Lock(锁)的研究以及跨线程UI的操作 (转)

    https://www.cnblogs.com/tommyheng/p/4104552.html 本文只针对C#中,多线程同步所用到的锁(lock)作为研究对象.由于想更直观的显示结果,所以,在做de ...

  9. js的线程和同步异步以及console.log机制

    项目上线了,闲下来就写写东西吧.积累了好多东西都没有做笔记~挑几个印象深刻的记录一下吧. js的同步异步以及单线程问题: 都知道单线程是js的一大特性.但是通常io(ajax获取服务器数据).用户/浏 ...

随机推荐

  1. Flask之加载静态资源

    Flask之加载静态资源 1.加载css样式 <link rel="stylesheet" href="{{ url_for('static',filename=' ...

  2. oracle赋予一个用户具有查询另一个用户所有表数据

    一  以需要被查询的用户登录oracle(假如为A)   B为要查询A用户下的表的用户 二  执行查询语句: select 'grant select on A.'|| tname ||' to  B ...

  3. C++ STL partial_sort

    #include <iostream>#include <deque>#include <algorithm>#include <vector> usi ...

  4. 如何屏蔽掉烦人的www.google-analytics.com

    有时候在开发的网站项目中会加载谷歌分析的js,并且加载的非常慢导致浏览器一直在转圈圈. 按下面的方法可屏蔽掉烦人的www.google-analytics.com   现在想只有屏蔽掉google-a ...

  5. vs 扩展和更新下载的插件在什么位置呢,看看吧,哈哈

    C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\10.0\Extensions,注意哈,这个AppData是隐藏的哟,要显示才能 ...

  6. laravel 自带消息notification通知

    原文地址:https://blog.csdn.net/zhangxh1013/article/details/53130490

  7. PJzhang:钓鱼域名生成工具urlcrazy

    猫宁!!! www.baidu.com和www.baibu.com是不是很相似,urlcrazy可以自动生成一大批. 这款工具的作者是Andrew Horton 工具下载地址: http://www. ...

  8. linux 怎样关闭x server?

    如果想切换至纯粹一点的命令字符console下,一般人会认为切换Ctrl+Alt+F1(或者F2-F6都可以). 默认下,Ctrl+Alt+F7是图形界面(当然,各个Linux发行版本会有所差异). ...

  9. Burp_Suite_Pro_v1.7.*激活

    先下载工具: 链接:https://pan.baidu.com/s/1ZLvg8eqkgWI94FtrhkcTxg 提取码:9z1j 工具运行需要Java环境.解压完后双击keygen   填一下Li ...

  10. YUV格式全解

    YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大.YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多 ...