程序
*为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。 代码只是程序的组成成分
线程
*线程在操作系统中能够进行运算调度最小单位
*被包含与进程之中,是进程中实际运作的单位
*一个进程可并发多个线程,每条线程并行执行不同任务
进程 Process
*进程是程序的一次执行进程是可以和别的计算并行执行
*进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位
多线程 Multithreading
多线程是指从软件或者硬件上实现多个线程并发执行技术
//创建线程方式一 :继承Thread类 ,重写run()方法,调用start开启线程
//继承Thread类
public class Test extends Thread {
//重写run方法
@Override
public void run(){
for (int i = 0; i < 20; i++) {
System.out.println("我是卡卡西"+i);
}
}
public static void main(String[] args) {
//main线程,主线程
//创建一个线程对象
Test test = new TestThread();
//调用start()方法开启线程
test.start();
for (int i = 0; i < 200; i++) {
System.out.println("我在学习线程"+i);
}
}
}
*线程开启不一定立即执行,由CPU调度执行
- 子类继承Thread类具备多线程能力
- 启动线程:子类对象.start()
- 避免OOP单继承局限性
创建方法2
Runnable接口-
-
实现接口runnable具有多线程能力
-
启动线程:传入目标对象+Thread对象.start()
new Thread(testThread1).start(); 等价 Thread thread = new Thread(testThread1); thread.start();
-
避免继承局限性,灵活方便
-
方便一个对象被多个线程使用
//创建2.实现runnabel接口
// 重写run方法,执行线程需丢入runnable参数
public class TestThread1 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("我是贾维斯"+i);
}
}
public static void main(String[] args) {
//创建runnable 接口的实现类
TestThread1 testThread1 = new TestThread1();
//创建线程对象 通过对象来开启线程代理
// Thread thread = new Thread(testThread1);
// thread.start();
new Thread(testThread1).start();
for (int i = 0; i < 200; i++) {
System.out.println("我是贾克斯"+i);
}
}
}