1:进程
进程是操作系统的一个任务(应用程序运行在一个进程中)。
进程是含有某些资源的内存区域。进程中会有一个线程或者
是多个线程
举例说明:OS(操作系统)会打开多个应用程序,如可以
打开视频软件,音频软件,qq,wechat
2:线程
线程是进程中的一个顺序执行流(顺序执行流是有程序启动入口,程序逻辑和程序结束出口)。
线程是应用程序中的一个任务(此任务完成了一个功能)
举例说明:视频软件打开后,会有缓冲功能,播放功能
3:进程和线程的区别
进程是针对于OS级别来说的一个任务。线程是针对于app级别来说的
一个任务。线程有自己独立的堆栈空间,线程属于进程中的一部分,
多个线程可以共享进程的内存空间。线程之间的切换比较轻负荷。
线程又叫轻负荷进程。
4:并发
在计算机中,宏观上,多个线程,发现可以"同时运行",
其实在微观上是断断续续的。cpu会将一段时间划分成无数微小
的时间片段,然后把时间片段尽可能的平均随机的分配给某一个
线程,(其他线程处于等待状态)进行微观的,肉眼感知
不到的间歇性运行。这就是并发。实际上并不是我们所说的"同时进行"。
并发可以提高效率。
5:线程的状态
6:线程的创建
(1)继承Thread类完成线程的创建。
Thread类是类型,里面的run()需要实现,写要执行
的任务逻辑代码。
进程是操作系统的一个任务(应用程序运行在一个进程中)。
进程是含有某些资源的内存区域。进程中会有一个线程或者
是多个线程
举例说明:OS(操作系统)会打开多个应用程序,如可以
打开视频软件,音频软件,qq,wechat
2:线程
线程是进程中的一个顺序执行流(顺序执行流是有程序启动入口,程序逻辑和程序结束出口)。
线程是应用程序中的一个任务(此任务完成了一个功能)
举例说明:视频软件打开后,会有缓冲功能,播放功能
3:进程和线程的区别
进程是针对于OS级别来说的一个任务。线程是针对于app级别来说的
一个任务。线程有自己独立的堆栈空间,线程属于进程中的一部分,
多个线程可以共享进程的内存空间。线程之间的切换比较轻负荷。
线程又叫轻负荷进程。
4:并发
在计算机中,宏观上,多个线程,发现可以"同时运行",
其实在微观上是断断续续的。cpu会将一段时间划分成无数微小
的时间片段,然后把时间片段尽可能的平均随机的分配给某一个
线程,(其他线程处于等待状态)进行微观的,肉眼感知
不到的间歇性运行。这就是并发。实际上并不是我们所说的"同时进行"。
并发可以提高效率。
5:线程的状态
6:线程的创建
(1)继承Thread类完成线程的创建。
Thread类是类型,里面的run()需要实现,写要执行
的任务逻辑代码。
线程启动时,调用start(),不能调用run()。
7:线程安全的常用类型API
StringBuilder
StingBuffer
String
8:集合中的ArrayList和HashSet,Map
都是线程不安全的
main{
T t =new T();
//此时有两个线程都可以访问t
//其中一个线程调用run(),另外一个线程
//调用show方法,但是因为方法上了锁,
//锁对象是t,所以,在运行run()时,运行show方法
//的线程处于阻塞状态。
}
public class T{
public synchronized void run(){
}
public synchronized void show(){
}
}
线程池:
线程池就是java中提供了一个类型Executors
此类型提供了多种创建线程池的方法来进行管理线程。
线程池就是含有多个线程的一个对象。当服务器上的多个线程结束
或 者是线程之间的切换都会频繁的消耗系统内存。我们可以在创建
一定数量的线程后,不结束这些线程,当任务执行完后,让这些线程
继续执行其他的任务。就会大大的减少了内存消耗。