多线程技术
一、线程与进程?
- 进程是资源分配的基本单位。每个进程都有一个独立的内存空间。
- 线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。
二、线程调度
1.分时调度
- 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
2.抢占式调度
优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个线程执行
三、同步与异步&并发与并行
- 同步:排队执行 , 效率低但是安全.
- 异步:同时执行 , 效率高但是数据不安全.
1000个task排队要比1000个task同时access CPU 要快
- 并发:指两个或多个事件在同一个时间段内发生。
- 并行:指两个或多个事件在同一时刻发生(同时发生)。
四、线程创建
public class MyThread extends Thread {
@Override
public void run() {
// do something
}
}
// 调用class
MyThread m = new MyThread();
m.start();
public class MyRunnable implements Runnable{
@Override
public void run() {
// do something
}
}
// 调用class
MyRunnable r = new MyRunnable();
//创建一个线程并给他一个任务
Thread t = new Thread(r);
//启动线程
t.start();
//线程同步synchronized
static class Ticket implements Runnable{
private Object o = new Object();
@Override
public void run() {
while (true) {
synchronized (o) {
// do something
}
}
}
}