Java多线程
让计算机看起来可以干很多事情。
计算机在用它的超高运行性能碾压人类的反应速度。
手机对着电脑屏幕扫描,因为变换频率相差不大,所以会闪。
酷睿多核,保证电脑可以在物理上实现多线程。
进程是操作系统中运行的一个任务。
进程是一块包含了某种资源的内存区域。操作系统利用进程把它的工作
划分为一些功能单元。
线程只能归属于一个进程并且它只能访问该进程所拥有的资源。
当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程。
每个进程有一段独立的内存。
一个线程是进程的一个顺序执行流。
线程没有独立的内存。多个线程共享进程的内存。
同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈。
线程在切换负载小,因此线程也被称为轻负载进程。一个进程中包多个线程。
进程是操作系统级别运行的任务。进程至少需要一个线程。
线程是进程中独立运行的一个任务。每个应用程序都是一个进程。
线程使用的场合
线程通常用于在一个程序中需要同时完成多个任务的情况。我们可以将每个任务定义为
一个线程,使他们得以一同工作。
也可以用于在单一线程中可以完成,但是使用多线程可以更快的情况。如下载文件。
多线程是并发运行的。(面试时一定要这么说)
多个线程“同时”运行只是我们感官上的一种表现。事实上线程是并发运行的,OS将时间划分为很多时间片段(时间片),尽可能均匀分配给每一个线程,获取时间片段的线程被
CPU运行,而其他线程全部等待。所以微观上是走走停停的,宏观上都在运行。这种现象较并发,
但是不是绝对意义上的“同时发生”。
线程专门有一个调度器。
CPU给哪个线程,哪个线程就开始运行。
引起线程阻塞的可能有:IO阻塞,睡眠阻塞。
线程调度器只能保证在分配时间片时分得的概率是一样的。线程调度室不可控的。