并发
大家已经熟悉了,在听着QQ音乐的同时,一边打着英雄联盟,,同时还挂着qq,时不时的被腾讯电脑管家弹出弹窗骚扰一下日常生活,这是因为我们操作系统的一种能力,看起来是在同一时刻运行多个程序,实际上不是,随着电子信息技术的不断发展,现在电脑都是拥有多个CPU的计算机,但是并发执行的进程并不受限于CPU的数目。操作系统会为每个进程分配CPU时间片,给人并行处理的感觉,就像白炽灯泡在一秒钟亮灭50次一样,我们人眼是察觉不到的,计算机一秒钟运行上亿乃至如今的超级计算机运行百万亿次。
我们可以查看自己的电脑是多少核心,多少线程的,一般可以通过
鼠标右键我的电脑->管理->设备管理器->处理器,进行查看
线程数=核心数X2;
例如我的电脑 是8核心,所以是16线程
多线程是在更低一层的进程(微信、QQ音乐、一个普通的java程序)中扩展了多任务的概念,单个程序看起来同时完成多个任务。每个任务在一个线程(thread)中执行,线程是控制线程的简称。如果一个程序可以同时运行多个线程,则这个程序是多线程的,在没学过Thread类之前,我们所写的程序都是单线程的,程序都是写在main线程中的。
那么多进程与多线程有什么区别?
本质上的区别在于,每个进程都拥有自己的一整套变量,而线程则共享数据。这看起来似乎有风险,的确也是是这样的,不过共享变量使线程之间的通信比进程之间的通信更有效,也更容易。此外在操作系统中,创建(销毁)一个(轻量级的)线程比创建一个进程也更容易,同时开销也要小得多。
在实际应用中,多线程非常有用 。例如我们在浏览器中我们可以同时可以下载几张图片、百度服务器可以同时处理众多用户的请求、当然你可以在1分钟内同多个女生聊天(海王),而这个时候女生是察觉不到的,这看起来就是一个多线程,只不过如果当你在同一时间内与这些女生一起吃饭,你会遇到麻烦的事情,如果你不想遇到这些麻烦的事情,你得保证你在同一时刻不让这些女生享有你,这样你就完美的避免了这个麻烦!
Web系统是最常见的Java应用之一,而基本的Web库、Servlet具有天生的多线程特性------这很重要,因为Web服务器往往运行在包含多个处理器上高性能PC端上,可能是云上。而并发是充分利用这些处理器的理想方式。
在当前,moore定律已经过时(至少在当下阶段芯片制造在传统工艺上性能马上要达到一个物理上的极限,只有新的技术变革,才会推动芯片速度的进一步提高),在以前运行速度的提高是通过提高单个芯片的频率或者集成电路和架构的不断迭代更新,而提高的,目前运行速度的提高是通过以多核处理器的形式,而不是频率更高的单颗Cpu来实现的,为了使用这些额外的处理器(例如我的是8核16线程),这也正是我们要学习多线程的目的所在,通过多线程技术,可以通过并发而使程序变得更快。
一、什么是线程?
敬请期待
二、线程状态
敬请期待
三、线程属性
敬请期待
四、同步
敬请期待
五、线程安全集合
敬请期待
六、任务和线程池
敬请期待
七、异步计算
敬请期待
八、进程
敬请期待