学习线程的前提我们需要先了解几个概念问题!
- 进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。
- 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。(这里我就不放图片了 大概就是象迅雷下载文件)
- 回归正题,所谓的多线程 就是 一个程序在进行 进行的时候可以又很多线程在同时进行;
那么我们该怎吗去创建一个线程呢?
- 第一中方法——继承Thread类
public class Threads extends Thread{
@Override
public void run() {
super.run();
}
public static void main(String[] args) {
Threads threads = new Threads();
threads.start();
System.out.println("继承的线程");
System.out.println("=============");
Threads threadss = new Threads();
threadss.start();
System.out.println("继承的线程");
}
}
- 实现Runnable 的接口
public class Thread2 implements Runnable {
@Override
public void run() {
System.out.println("实现的线程的方法");
}
public static void main(String[] args) {
Thread2 thread2 = new Thread2();
Thread threads = new Thread(thread2);
threads.start();
System.out.println("实现线程的方法");
}
}
- 线程内部类
public class Thread3 {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("实现方法");
}
}){}.start();
}
}
下面我们来用其中一个方法来实现一售卖火车票的系统
public class Train extends Thread {
static int num=20;
static Object obj=new Object();
@Override
public void run() {
while (true){
try {
Thread.sleep(20000);
synchronized (obj){
if (num>0) {
System.out.println("售出的票的票号是" + num);
num--;
}else {
System.out.println("票卖完了");
System.exit(0);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Train train = new Train();
train.start();
Train train1 = new Train();
train1.start();
}
}
谢谢大家的支持