等级考试二级JAVA考点分析之线程与对象串行化
8.1螺纹的概念
考点:1
螺纹的概念
1。Thread
(1)线程由指示程序运行状态的寄存器(包括程序计数器和堆栈)组成。
(2)线程是程序在执行过程中某一时刻的状态。
(3)线程是一个用户级实体,它驻留在内存中一个普通用户级方法可以直接访问的区域。
(4)每个线程都是一个控制进程,可以独立执行自己的指令。
(5)操作系统通过调度多线程实现线程的并发执行。
(6)线程本身不是程序,而是运行在程序或进程中。
(7)线程是一个动态的概念,有自己产生、存在、消亡的过程。
(8)Java通过在程序中提供多线程支持,提高了线程的安全性。
(9)线程是程序中的单个执行流,多线程是程序中的多个执行流。
2。程序、线程和进程
(1)程序是一段静态的代码,是应用软件执行的蓝图。
(2)进程是一个程序的动态执行过程,包括程序加载、执行到结束。
(3)线程是比进程更小的执行单元,一个进程可以包含多个线程。
(4)一个进程由代码、数据、内核状态和一组寄存器组成。
(5)线程不包含进程的地址空中的代码和数据。
考点:Java语言中的2个
线程
(1)Java语言中的线程包括三部分:虚拟CPU、CPU执行的代码、代码操作的数据。
(2)在Java语言中,代码和数据是相互独立的。代码可以在不同的线程之间共享,相同的数据也可以在不同的线程之间共享。
(3) Java.lang.thread类定义了Java语言中的线程模型,用户可以通过它来创建、定义和控制自己的线程。
8.2创建线程
考点:3
创建线程
在Java中,通过调用Thread类的构造方法创建线程对象,线程执行的入口方法是run(),可以通过两种方式实现。
1。通过实现Runnable接口
Thread类来创建流程,使用Runnable实例作为其构造方法。这个实例对象提供了线程体run(),线程从这个run()方法开始执行。新创建的线程必须调用线程的start()方法才能运行。
2。Runnable接口是通过继承Thread类
实现的,所以Thread类包含run()方法。通过继承Thread类并重写其run()方法来创建线程。
以上两种方法的比较如下:
(1)实现Runnable接口的方法符合面向对象的思想,实现Runnable接口的类可以很容易地继承其他类。一般提倡这种方法。
(2)继承线程类的方法比较简单,可以直接调用线程的方法。这取决于具体的应用。
8.3线程调度与线程控制
测试点:4
线程优先级与调度策略
线程优先级。Thread类中提供了三个静态常量:MIN_PRIORITY = 1,MAX_PRIORITY = 10,NORM_PRIORITY = 5来控制线程。子线程继承父线程的优先级,主线程拥有普通优先级。可以通过getPriority()方法获取线程的优先级,通过setPriority()设置线程的优先级。
线程调度是指在单个CPU上用一定的策略控制多个线程的执行。这种策略就是抢先调度。简单来说就是高优先级线程先运行,低优先级线程被高优先级线程抢占。在Java中,系统根据不同的优先级设置不同的线程等待池。首先,高优先级的线程将运行,然后低优先级的线程将运行。
测试点:5
线程控制
要控制线程,可以使用Thread类提供的以下方法:
(1)sleep(),一个线程通过调用这个方法在一定时间内挂起线程的运行
(2)yield(),一个线程通过
(3)join()。如果th。join)方法在当前线程中执行时,当前线程将停止运行,并等待另一个线程的th运行结束,然后将它恢复到可运行状态。
(4)interrupt(),可以调用它将线程从阻塞状态恢复。
(5)currentThread(),返回当前线程引用的静态方法。
(6)isAlive(),用于判断线程是否仍处于活动状态。
(7)stop(),强制终止线程。
(8)suspend()和resume(),前者用于挂起线程,后者用于恢复线程。
8.4线程的同步
测试点:6
对象的锁定和操作
多线程并发操作时,由于每个线程共享数据的操作顺序不同,会影响程序的执行结果。因此,Java语言使得传统的锁技术可以并发地控制共享数据的操作。
1。对象锁定及其操作
临界段(Critical section)是指程序中的一个代码段,其中独立的并发线程访问同一个对象。在Java中,临界区由关键字“synchronized”标识。
对象锁是指Java锁定synchronized(Object)语句指定的对象。对象锁是一种独占的排他锁。
2。对象锁的注意事项
使用对象锁需要注意以下几点:
(1)释放对象锁的情况:synchronized()语句块执行后,synchronized()语句块异常,持有锁的线程调用对象的wait()方法。
(2)所有被访问的共享数据和访问代码必须作为临界区使用,并由synchronized锁定。
0条评论