《Head First Java》20201028读书笔记

P486-P500

《Head First Java》20201028读书笔记

线程

我们需要同时执行的能力,检查服务器信息的同时不会打断用户与GUI的交互。
因此用户可以输入信息或滚动接受画面,还需要有东西在背景持续地读取服务器的数据。
这意味着我们需要新的线程(thread),一个独立的执行空间(stack)。
我们想要让只能发送的版本可以维持原来的执行,同时有新的进程(process)并行地读取服务器的信息并将它显示在文本区域上。
Java的multithreading
Java在语言中就有内置多线程的功能。
建立新的线程来执行是很简单的:

thread t = new Thread();
t.start( );

建立出新的线程对象就会启动新的线程,它是个独立的调用执行空间。
Java的多个线程课题意味着我们得要讨论线程与它的任务,以及java.lang中的Thread这个类(要记得java.lang是默认就有被import的,它是包括String和System等语言本身的基础)。

Java有多个线程但只有一种Thread类

线程是独立的线程。它代表独立的执行空间。
Thread是Java中用来表达线程的类。
要建立线程就得创建Thread。

在Java中以大写字母开始的东西是类,所以Thread是java.lang这个包中的一个类。Thread对象代表线程,当你需要启动新的线程时就建立Thread的实例。
在这里插入图片描述
线程是独立的线程,它代表独立的执行空间。
每个Java应用程序会启动一个主线程——将main()放在它自己执行空间的最开始处。
Java虚拟机会负责主线程的启动(以及比如垃圾收集所需的系统用线程)。
程序员得负责启动自己建立的线程。
Thread是个表示线程的类。它有启动线程、连接线程和让线程闲置的方法。

有一个以上的执行空间代表什么?

当有超过一个以上的执行空间时,看起来会像是有好几件事情同时发生,实际上只有真正的多处理器系统能够同时执行好几件事,但使用Java的线程可以让它看起来好像同时都在执行中。
也就是说,执行动作可以在执行空间非常快速地来回交换,因此会感觉每项任务都在执行。
在这里插入图片描述
如何启动新的线程

Runnable threadJob = new MyRunnable();
//建立Runnable对象(线程的任务)

Thread myThread = new Thread(threadJob);
//建立Thread对象(执行工人)并赋值Runnable(任务)

myThread.start();
//启动Thread

每个Thread需要一个任务来执行。一个可以放在执行空间的任务。

  • 以小写t描述的thread是个独立的线程。
  • Java中的每个线程都有独立的执行空间。
  • 大写T的Thread是java.lang.Thread这个类。它的对象是用来表示线程。
  • Thread需要任务,任务是实现过Runnable的实例。
  • Runnable这个接口只有以一个办法。
  • run()会是新线程所执行的第一项方法。
  • 要把Runnable传给Threada的构造函数才能启动新的线程。
  • 线程在初始化以后还没有调用start()之前处于新建立的状态。
  • 调用Thread对象的start()之后,会建立出新的执行空间,它处于可执行状态等待被挑出来执行。
  • 当Java虚拟机的调度器选择某个线程之后它就处于执行中的状态,单处理器的机器只能有一个执行中的线程。
  • 有时线程会因为某些原因而被堵塞。
  • 调度不能保证任何的执行时间和顺序,所以要你不能期待它会完全地平均分配执行,你最多也只能影响sleep的最小保证时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值