多线程的介绍
进程:
进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。
线程:
线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程(就是主线程)。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。所有的线程都共用由进程申请的同一片内存。
多线程程序
即,若有多个任务可以同时执行。如,去网吧上网,网吧能够让多个人同时上网。
程序运行原理
分时调度
所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
抢占式调度
优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。
如何创建一个线程
创建线程方式一继承Thread类
创建线程的步骤:
1 定义一个类继承Thread。
2 重写run方法。
3 创建该类的对象,就是创建线程对象。
4 调用start方法,开启线程并让线程执行,同时还会告诉jvm(Java虚拟机)去调用run方法。
代码示例
//定义一个类TestThread,继承Thread。
class TestThread extends Thread
{
@Override
public void run()
{
String name= Thread.currentThread().getName();
for (int i=0;i<50;++i)
{
System.out.println(name+":"+(i+1));
}
super.run();
}
}
// 创建TestThread的对象来使用你创建的子线程
TestThread tt=new TestThread();
//设置子线程的名字
tt.setName("子线程1");
//开启线程并告诉jvm去调用run方法
tt.start();
创建线程方式—实现Runnable接口
创建线程的步骤。
1、定义类实现Runnable接口。
2、覆盖接口中的run方法。。
3、创建Thread类的对象
4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。
5、调用Thread类的start方法开启线程。
//声明一个实现 Runnable 接口的类----PXDThread
class PXDThread implements Runnable
{
//实现 run 方法。
public void run() {
String name= Thread.currentThread().getName();
for (int i=0;i<50;++i)
{
System.out.println(name+":"+(i+1));
}
}
}
//创建一个任务
PXDThread pt=new PXDThread();
//把该任务放入一个线程中
Thread t=new Thread(pt);
t.setName("子线程3");
t.start();