java多线程书摘

本文深入探讨了Java多线程的基本概念与应用,讲解了如何通过多线程提高程序的交互性和实时响应能力,特别是在网络编程中并发执行的场景。同时,文章分析了Java线程模型,包括线程的启动、控制、挂起与停止,以及线程对象与运行线程的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这些文字如果不是概念完全不懂的,建议不看了,如果是初入门,我觉得讲得蛮浅显的,可以一看~

多线程的概念:
你可以将程序任务分成几个并行的子任务。尤其在网络编程中,你会发现很多功能其实是可以并发执行的。例如网络传输速度慢,用户输入速度慢,你可以用两个独立的线程去完成这些,而不影响正常的显示或其他功能。多线程是与单线程比较而言的,普通的windows采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断的从消息队列中读入消息来决定下一步所要做的事情,一般是一个子函数,只有等这个子函数执行完返回后,主程序才能接收另外的的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件,只有等读完这个数据或者文件才能接收下一个消息,在执行这个子函数的过程中你什么也无法做。但是往往在读网络数据和等待用户输入有甚多时间是处于等待状态的,多线程就是利用这个特点将任务分成多个并发任务后,就可以解决这个问题。

java线程的模型:
java的设计思想是建立在当前大多数的操作系统都实现了线程调度的基础上。java虚拟机的很多任务都依赖线程调度,而且所有的类库都是为了多线程设计。实际上,java支持Macintosh和Ms-dos的平台,所以迟迟未出来就是因为这两个平台都不支持多线程。java利用多线程实现了整个执行环节是异步的。在java程序中没有主消息循环。如果一个线程等待读取网络数据,它可以运行但不停止系统其它线程执行。用于处理用户输入的线程大多时间是等待用户敲键盘或者点击鼠标。你还可以使用动画的每一帧间停顿一秒而并不使系统暂停。一旦线程启动后,它可以被挂起,暂时不让它执行。挂起的线程可以重新恢复执行。任何时间线程都可以被停止,被停止的线程就不能再重新启动。java语言里,线程表现为线程类,线程类封装了所有需要的线程操作控制。在你的心里,必须很清晰地区分开线程对象和运行线程,你可以将线程对象看作是运行线程的控制面板。在线程对象里很多函数来控制一个线程是否运行,睡眠,挂起或停止。线程类是控制线程行为的唯一手段。一个java程序启动后,就已经有一个线程在运行。你可以通过调用Thread.currentThread函数来查看当前运行的是哪一个线程。你得到一个线程的控制柄,然后你就可以做有趣的事情,即使单线程也一样的。

启动接口:
一个线程并不激动人心,多个线程才会有实际意义。怎样去创建更多的线程呢?我们需要创建线程类的一个实例,当我们构造了线程类的一个新的实例,我们必须告诉它在新的线程里必须执行哪一段的程序。你可以再任意实现了启动接口的对象上启动一个线程。启动接口是一个抽象接口,来表示本对象有一个函数想异步执行。
——《java语言入门》
看了这么多字 还没头昏眼花的
多线程可以带来更好的交互响应和实时行为。 如今,我们非常关注并发性,因为摩尔定律行将完结。我们不再追求更快的处理器,而是着眼于获得更多的处理器,而且要让它们一直保持工作。不过,可以看到,大多数编程语言对于这个问题并没有显示出足够的重视。 Java 在当时很超前,它是第一个支持并发程序设计的主流语言。从白皮书中可以看到,它的出发点稍有些不同。当时,多核处理器还很神秘, 而 Web 编程才刚刚起步,处理器要花 很长时间等待服务器响应,需要并发程序设计来确保用户界面不会“ 冻住”。并发程序设计绝非易事,不过 Java 在这方面表现很出色, 可以很好地管理这个工作。

——《java核心技术卷一》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值