JAVA基础笔记(3)

2016-09-27  本文已影响16人  大虾咪

进程:是一个正在执行中的程序

每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。

线程:就是进程中的一个独立的控制单元  线程在控制着进程的执行

一个进程至少又一个线程

java 虚拟机VM  启动的时候会有一个进程java.exe  该进程中至少有一个线程负责java程序的执行

而且这个线程运行的代码存在于main方法中 该线程成为主线程

扩展:其实更细节说jvm  ,jvm启动不止一个线程,还有负责垃圾回收机制的线程

创建线程的第一种方法:继承Thread类

步骤:1.定义类继承Thread

2.复写Thread类中的run方法: 目的将自定义代码存储在run方法。让线程运行

3.调用线程的start  :该方法的两个作用:启动线程,调用run方法

创建线程的第二种方法:实现Runable接口

步骤:1.定义类实现Runable接口

2.覆盖Runable接口中的run方法 ,将线程要运行的代码存放在该run方法中

3.通过Thread类建立线程对象

4.将Runable接口的子类对象作为实际参数传递给Thread类的构造函数

为什么要将Runable接口的子类对象传递给Thread的构造函数。

因为,自定义的run方法所属的对象是Runable接口的子类对象,所以要让线程去指定指定的run方法。

就必须明确该run方法的所属对象

5.调用Thread类的start方法开启线程并调用Runable接口子类的run方法

实现方式和继承方式有什么区别?

实现方式好处:避免了单继承的局限性

在定义线程时,建立使用实现方式

两种方式区别:

继承Thread:线程代码存放Thread子类run方法中

实现Runable:线程代码存放在接口子类的run方法中

notify();唤醒第一个进入等待的

jdk1.5中提供了 多线程升级的解决方案

将同步synchronized替换成现实的Lock操作

将Object中的wait , notify notifyAll 替换成 Condition对象  await single signalAll()

该对象可以Lock锁 进行获取

如何停止线程?

stop方法已经过时

只有一种方法 ,run方法结束

开启多线程运行,运行代码通常是循环结构

只要控制住循环,就可以让run方法结束 ,也就是线程结束

特殊情况 当线程处于了冻结状态,就不会读取到标志,那么线程就不会停止

jion:

当A线程执行到了B线程的。jion()方法时,A就会等待。等B线程都执行完了,A才会执行。

jion可以用来临时加入线程执行。

线程优先级

上一篇下一篇

猜你喜欢

热点阅读