-
- 线程和进程
- 进程:
- 当一个程序进入到内存中运行的时候,它就变成了一个进程。进程是处于运行过程当中的程序,并且具有一定的独立功能。进程是系统进行资源分配和调度的一个独立单位。
- 进程特点:
- 独立性
- 动态性
- 并发性
- 并发和并行
- 并行是指在同一时刻,有多条指令在多个处理器上同时执行。
- 并发是指在同一时刻,只能有一条指令执行。但是多个进程指令被快速的轮换执行。达到在宏观上具有多个今晨同时执行的效果。
- 多线程:
- 线程是进程的组成部分,一个进程可以有多个线程。一个线程必须有一个父进程。线程可以拥有自己的堆栈、自己的局部变量等等。但是不拥有系统资源。它和父进程里面的其他的线程共享该进程所拥有的全部资源。
- 线程是独立运行的。它并不知道进程中是否还有其他线程。线程的执行是抢占式的。也就是说,当前运行的线程在任何的时候都可能被挂起,以便另一个线程可以运行。
- 操作系统可以同时执行多个任务,每个任务就是进程。进程可以同时执行多个任务,每个任务就线程。
- 多线程相比多进程的优势:
- 1.进程之间不能共享内存,但是线程直接可以,共享内存非常容易。
- 2.系统在创建进程的时候,需要为进程重新分配系统资源,但是创建线程的代价就要小的多。
- 3.Java语言内置了对于多线程功能的支持。
- 进程:
-
- 继承Thread类创建线程类
- 实现Runnable接口创建线程类
-
使用Callable和Futrue创建线程
- 线程的生命周期
- 线程的5种状态
- 新建(New)
- 就绪(Runnable)
- 运行(Running)
- 线程从运行进入阻塞状态情况:
- 1.调用sleep方法,线程主动放弃所占用的处理器资源
- 2.调用了阻塞式IO方法,这个方法返回之前,线程会被阻塞
- 3.线程试图获取一个同步监视器,但是这个同步监视器正在被其他的线程所持有。
- 4.线程在等待某个通知。
- 5.程序调用了线程的挂起方法,把线程挂起。
- 线程从运行进入阻塞状态情况:
- 阻塞(Blocked)
- 让线程从阻塞转换到就绪状态的几种情况:
- 1.调用sleep方法的线程经过了指定的时间
- 2.调用的阻塞式IO已经返回
- 3.成功获取到了同步监视器
- 4.在等待某个通知的时候,其他线程发出了通知
- 5.被挂起线程,被调用了恢复方法。
- 让线程从阻塞转换到就绪状态的几种情况:
- 死亡(Dead)
- 1.run方法或call方法执行结束,线程会正常结束
- 2.线程抛出一个未捕获的Exception或Error
- 3.直接调用stop方法结束该线程。这种方式容易造成死锁,不建议使用
- 线程的5种状态
- 线程和进程
2021-07-05
最新推荐文章于 2024-10-11 17:30:36 发布