JUC并发编程学习笔记(一)认知进程和线程

打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

进程和线程

进程
一个程序,如QQ.exe,是程序的集合
一个进程往往可以包含多个线程,至少包含一个
java默认有两个线程,GC垃圾回收线程和Main线程
线程:一个进程中的各个功能
java无法真正的开启线程,因为java是运行在虚拟机上的,所以只能通过C++,通过native本地方法调用C++开启线程
  1. private native void start0();
复制代码
并发、并行
并发:多线程操作同一资源

  • cpu单核情况下,通过快速交替模拟多条线程
并行:多个线程一起行走

  • 只有在cpu多核情况下才可能产生并行,多个线程同时进行,cpu核数决定最大并行量。线程池
并发编程的本质就是想要充分利用电脑的cpu资源
线程有几个状态
java中的Thread.State重点列举了线程的状态,其中有6中状态
  1. public enum State {
  2.     //新增
  3.         NEW,
  4.         //运行
  5.         RUNNABLE,
  6.     //阻塞
  7.         BLOCKED,
  8.     //等待,死等
  9.         WAITING,
  10.     //超时等待
  11.         TIMED_WAITING,
  12.     //终止
  13.         TERMINATED;
  14.     }
复制代码
wait/sleep的区别

  • 来自不同的类
    wait->Object类
    sleep->Thread类
  • 关于锁的释放
    wait会将锁释放、sleep不会释放锁,抱着锁睡觉
  • 使用的范围是不同的
    wait必须在同步代码块中使用
    sleep可以在任何地方使用
  • 是否需要捕获异常
    wait不需要捕获异常,由于在同步代码块中,所以不存在超市等待的问题
    sleep必须要捕获异常,可能会发生超时等待的问题
    只要是线程都会有一个异常,那就是中断异常

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表