一、程序、进程和线程的关系和并发与并行的关系
线程(Thread)是执行程序的一个线(主线或者支线),每一个线程都有一个优先级(priority),线程被按照优先级的高低依次执行。当一个线程内创建了一个新的线程,新的线程的优先级就会被初始化为和已有线程一样的优先级。
进程是线程的容器,是系统进行资源分配和调度的基本单位
程序是指令、数据及其组织形式的描述,进程是程序的实体——运行的程序就是进程。
线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。
二、线程的使用
线程的使用有两种方法,一种是创建一个Thread类的子类,另一种是创建一个继承Runnable接口的类。
1.Thread的子类
在创建一个Thread类的子类的时候,我们需要重写run();方法,在想要创建线程的时候,只需要新建对象并且调用对象的start();方法即可。具体方法如下:
//子类的创建
class SubThread extends Thread{
public void run(){
System.out.println("线程被调用");
}
}
//子类对象的创建和调用
SubThread st = new SubThread();
st.start();
2.Runnable接口的使用
如果想要创建的类已经继承了一个父类,那么我们就可以使用Runnable借口,通过implements这个接口,我们可以开启一个新的线程,但在使用的时候,需要初一的是,除了需要新建一个子类对象,还要以子类的对象为参数新建一个线程。
//子类的创建
class SubRun implements Runnable{
public void run(){
System.out.println("线程被调用");
}
}
//子类对象的创建和调用
SubRun sr = new SubRun();
new Thread(sr).start();
三、线程的应用
线程的简单应用:画一个粉色的流星雨吧。
1.窗口设置
在窗口这之后,我们要注意改变一下窗体的背景颜色,因为为了使流星雨能动起来,我们要不断的重新绘制画面,
package threadgame;
import java.awt.*;
import javax.swing.*;
public class GameUI {
public static void main(String args[]) {
GameUI gui=new GameUI();
gui.initUI();
}
private void initUI() {
JFrame jf=