進程:進程是程序的一次執行,是系統進行資源分配和調度的獨立單位。每個進程都有它本身的內存空間和系統資源。
線程:是進程的一個執行單元,是進程內科調度實體,比進程更小的獨立運行的基本單位。一個進程在其執行的過程當中能夠產生多個線程,與進程不一樣的是同類的多個線程共享進程的堆和方法區資源,但每一個線程有本身的程序計數器、虛擬機棧和本地方法棧,因此係統在產生一個線程,或是在各個線程之間做切換工做時,負擔要比進程小得多,所以線程也被稱爲輕量級進程。
一個程序至少一個進程,一個進程至少一個線程。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