多线程
2020-07-02 本文已影响0人
魔女小姐的猫
进程
在多任务的系统中,每个独立执行的程序都被称为进程(正在进行的程序)
CPU只有一个的情况下,每个进程之间要不断的切换,反而要额外的开销(交替执行多个程序)反而更慢
双CPU系统才能实现多进程,每个CPU一个执行一个程序,两个程序同时进行
一个进程可以包含一个或多个线程
线程
一个线程就是一个程序内部的一条执行线索
多线程:一个程序实现多段代码同时交替运行,就需要产生多个线程,并且指定每个线程要执行的代码
Thread.currentThread().getName();
Thread thread = new Thread();
//后台线程
thread.setDaemon(true);
多线程卖票案例
public class ThreadDemo {
public static void main(String[] args) {
try {
/**
* 一个thread对象是一个线程
*/
TestThread tt = new TestThread();
// 继承thread
// tt.start();
// tt.start();
// tt.start();
// tt.start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
} catch (Exception e) {
// TODO: handle exception
}
}
}
/**
* 实现runnable 接口比继承thread灵活
*
* 适合多个相同程序代码的线程去处理同一资源的情况,把虚拟CPU(线程)同程序代码、数据有效分离 , 体现了面向对象的设计思想
*
* @author TianYu
*
*/
class TestThread implements Runnable /* extends Thread */ {
int tickets = 100;
@Override
public void run() {
while (true) {
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + " is show " + tickets--);
}
}
}
}