java线程入门基础(一)
一.基础概念
1.CPU核心数和线程数的关系
多核心:也指单芯片多处理器( Chip Multiprocessors,简称CMP),CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。这种依靠多个CPU同时并行地运行程序是实现超高速计算的一个重要方向,称为并行处理。
多线程: Simultaneous Multithreading.简称SMT.SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或 Cache未命中带来的访问内存延时。
操作系统是通过线程来执行任务的,一般情况下它们是1:1对应关系,也就是说一个核心数对应一个线程数;Intel引入超线程技术后,使核心数与线程数形成1:2的关系
2.CPU时间轮转机制
时间片轮转调度是一种最古老、最简单、最公平且使用最广的算法,又称RR调度。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。
3.什么是进程和线程
3.1 进程
进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘10等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的、静态的,进程是活的、动态的。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身,用户进程就是所有由你启动的进程。
3.2 线程
线程是CPU调度的最小单位,必须依赖于进程而存在;
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的、能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
4.澄清并行和并发
谈论并发的时候一定要加个单位时间,也就是说单位时间内并发量是多少?离开了单位时间其实是没有意义的。
并行:指应用能够同时执行不同的任务,例:吃饭的时候可以边吃饭边打电话,这两件事情可以同时执行;
例如:有一个4车道的道路,并行就是指同一时刻,最多可以4辆车并行行驶;并发就是在1分钟内道路的车流量是多少,并发量是多少;
两者区别:一个是交替执行,一个是同时执行.
5.高并发编程的意义、好处和注意事项
多线程可以给程序带来如下好处
(1)充分利用CPU的资源
(2)加快响应用户的时间
(3)可以使你的代码模块化,异步化,简单化
多线程程序需要注意事项
(1)线程之间的安全性
(2)线程之间的死循环过程
(3) 线程太多了会将服务器资源耗尽形成死机当机
网友评论