- 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合,一段静态的代码。
- 进程(process)是程序的一次执行过程,或是正在运行的一个程序。
进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域 线程:进程可进一步细化为线程,是一个程序内部的一条执行路径,
线程作为调度和执行的单位。---
多线程实现方法
创建多线程的方式一:继承Thread类
- 创建一个继承于Thread类的子类
- 重写Thread类的run() --> 将此线程执行的操作声明在run()中(注意!启动多线程时不是调用run方法!)
- 创建Thread类的子类的对象
- 通过此对象调用start()
Thread的相关方法:
void start()
: 启动线程,调用当前对象的run()方法run()
: 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中run()
: 线程在被调度时执行的操作(可以理解为类中的构造器)sleep(long millitime)
:让当前线程“睡眠”指定的millitime毫秒。在指定的millitime毫秒时间内,当前线程是阻塞状态。yield()
:释放当前cpu的执行权getName()
:获取当前线程的名字setName()
:设置当前线程的名字String getName()
: 返回线程的名称void setName(String name)
:设置该线程名称join()
:当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止static void sleep(long millis)
:(指定时间:毫秒)(令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。)stop()
: 强制线程生命期结束,不推荐使用。boolean is Alive()
:返回boolean,判断线程是否还活着setPriority(int newPriority)
:改变线程的优先级(1-10,数字越高优先级越高(高优先级的线程要抢低优先级的线程的cpu的执行权,只是概率。并不是高优先级先执行完,在执行低优先级))
创建多线程的方式二:实现Runnable接口
- 创建一个实现了Runnable接口的类
- 实现类去实现Runnable中的抽象方法:run()
- 创建实现类的对象
- 将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
- 通过Thread类的对象调用start()
public class Jicheng extends Thread{
//继承多线程实现类
public static int i=100;
public void run() {
for (; i>0; i--) {
System.out.println(Thread.currentThread().getName()+"卖出了一张,还剩"+i);
}
}
}
public class Test {
public static void main(String[] args) {
Jicheng c=new Jicheng();
Jicheng e=new Jicheng();
Jicheng w=new Jicheng();
//创建继承的多线程实现类的对象
c.start();
//使用 对象名.start 启动线程
e.start();
w.start();
}
}
------------------------------------------------------------------------------------------------
public class Jiekou implements Runnable{
//(通过实现Runnable的方法实现多线程)
public static int i=100;
@Override
public void run() {
for (;i>0;i--){
System.out.println(Thread.currentThread().getName()+"卖出了一张票,还剩"+i);
}
}
}
public class Test {
public static void main(String[] args) {
Jiekou c=new Jiekou();
//(创建实现Runnable接口的子类对象)
new Thread(c).start();
//(将创建的Runnable接口的子类对象,作为参数,传递给thread类的构造器并调用start()方法)
new Thread(c).start();
new Thread(c).start();
}
}