java多线程意义_Java多线程学习之多线程的概念及意义

Java的线程机制,则是由执行程序表示的单一进程创建的任务(拗口!),注意,是在单一进程里面创建多个任务,不同于操作系统分叉外部进程。由于所有的任务在同一个进程内,任务之间会相互干涉(例如操作同样的对象,内存)。这些独立的任务则是由执行线程来驱动,一个线程就是在进程中的一个单一的顺序控制流。Java的线程机制是对操作系统透明的,线程不需要知道底层CPU是单核还是多核。线程通过切分CPU时间来获得并发执行,需要消耗上下文切换(但是与进程切换相比要小很多)。

总结:Java运行的单一进程创建许多独立的任务,而每一个任务都需要在一个线程上执行,以实现进程的多任务。

为何要创建多任务?这个问题等价于为何要使用并发编程。一个用户经常使用的程序,一般都会有诸如关闭按钮,随时响应用户输入,并且不断有可视化图形界面输出,试想如果没有并发编程(即是没有多任务)的情况下,进程只有一个任务在运行,假设是等待输入。进程在等待用户输入的时候,进入IO阻塞,这时候,图形界面静止了,也没法关闭进程(因为在等待用户输入,所有CPU时间都用在等待上面,无法响应关闭事件)。有了并发编程(即允许进程创建多个任务,这里3个任务就够了:等待用户输入、等待关闭操作和输入图形界面),这些任务都能被分配到一定的CPU时间片,形象的说就是大家都有机会来执行(分配机制取决于运行的系统),这样,即是等待用户输入任务进入了IO阻塞,CPU可以切换到其余两个任务(注意CPU同一时间内只能执行一个任务,但是因为切换,看起来像是并发执行多个任务),这样界面一样有输出,关闭操作也得到响应,而当用户真的进行了输入,等待用户输入任务还是可以响应用户输入(需要注意的是,这个响应用户输入并不是即时的,因为输入发生时CPU不一定在执行等待用户输入任务,不过线程的调度机制可以确保得到响应)。

与线程一起被提及的另一个概念是进程,进程是运行在它自己的地址空间内的自包容的程序(不了解~~~~(>_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值