package com.ruigege.threadFoundation1; public class MyThreadExtendsType extends Thread { @Override public void run() { System.out.println("這是一個繼承Thread類的多線程表示方法"); } }
package com.ruigege.threadFoundation1; public class MyThreadImplementsRunnable implements Runnable{ @Override public void run() { System.out.println("這是一個實現Runable接口的多線程"); } }
package com.ruigege.threadFoundation1; public class MultiBuildThreadTest { public static void main(String[] args) { //使用繼承Thread的類的方式來進行多線程建立 MyThreadExtendsType thread1 = new MyThreadExtendsType(); thread1.start(); //使用實現Runnable接口的方式進行多線程建立 Thread thread2 = new Thread(new MyThreadImplementsRunnable()); thread2.start(); } }
package com.ruigege.threadFoundation1; import java.util.concurrent.Callable; public class MyThreadImplementsCallable implements Callable<String> { @Override public String call() throws Exception{ System.out.println("使用FutureTask的方式來行建立多線程"); return "建立好了"; } }
package com.ruigege.threadFoundation1; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class MultiBuildThreadTest { public static void main(String[] args) throws InterruptedException, ExecutionException{ //使用Callable和FutureTask來建立多線程 FutureTask<String> futurnTask = new FutureTask<>(new MyThreadImplementsCallable()); Thread thread3 = new Thread(futurnTask); thread3.start(); System.out.println(futurnTask.get()); } }
執行native方法,pc計數器是undefined地址;執行Java代碼的時候纔是原定義java
synchronized(共享變量){ }
synchronzied void add (int a,int b){ a + b; }
synchronize(obj){ while(條件不知足){ obj.wait(); } }
https://github.com/ruigege66/ConcurrentJava