进程:进程是程序的一次执行,是系统进行资源分配和调度的独立单位。每个进程都有它本身的内存空间和系统资源。
线程:是进程的一个执行单元,是进程内科调度实体,比进程更小的独立运行的基本单位。一个进程在其执行的过程当中能够产生多个线程,与进程不一样的是同类的多个线程共享进程的堆和方法区资源,但每一个线程有本身的程序计数器、虚拟机栈和本地方法栈,因此系统在产生一个线程,或是在各个线程之间做切换工做时,负担要比进程小得多,所以线程也被称为轻量级进程。
一个程序至少一个进程,一个进程至少一个线程。java
并发性是指同一时间间隔内发生两个或多个事件,是在同一实体上的多个事件git
继承Thread,重写run方法github
public class MyThread extends Thread { @Override public void run() { for (int x = 0; x < 200; x++) { System.out.println(x); } } }
public class MyThreadDemo { public static void main(String[] args) { // 建立两个线程对象 MyThread my1 = new MyThread(); MyThread my2 = new MyThread(); my1.start(); my2.start(); } }
实现Runnable接口,重写run方法多线程
public class MyRunnable implements Runnable { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(x); } } }
public class MyRunnableDemo { public static void main(String[] args) { // 建立MyRunnable类的对象 MyRunnable my = new MyRunnable(); Thread t1 = new Thread(my); Thread t2 = new Thread(my); t1.start(); t2.start(); } }
通常使用实现Runnable接口并发
是多线程的。不单单是启动main线程,还至少会启动垃圾回收线程的jvm
这是github上一位大佬整理的,我的以为很棒
并发基础笔试题ide