1.进程与线程的区别?
何为进程,进程可以理解为一个应用,一个app的实例,一般都是单实例进程,也有多实例进程(比如开两个txt文档),其中的线程才是真正执行任务的一个单元。所以进程包含线程,一个进程里面至少有一个线程。同一个进程里面的线程可以共享资源。
2.并行与并发的区别?
这里要区分单核cpu和多核cpu的情况。
单核cpu时,其本质上只有并发,以极快的速度交替执行,造成并发的假象。
多核cpu时,在并发的基础上,才有真正的并行。
并发:一个线程在一个cpu上交替执行,强调交替执行。
并行:多个cpu同时处理,强调同时处理一些事,如4核cpu同时执行4线程。
3.线程创建的方式有哪些?
1.继承Thread类,重写run(),然后调用start()开启子线程
public class MyThread extends Thread{
@Override
public void run() {
System.out.println("子线程运行了!");
}
}
public class MyTest {
public static void main(String[] args) {
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
}
}
2.实现Runnable接口,重写run(),然后new一个Thread类,在构造方法中传入Runnable的实现类,最后调用start()开启子线程
public class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("子线程运行了");
}
}
public class MyTest {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread t1 = new Thread(myRunnable);
Thread t2 = new Thread(myRunnable);
t1.start();
t2.start();
}
}
3.实现Callable接口