Java线程通信
Java线程通信
螣蛇乘雾,终为土灰。
多个线程协同工作完成某个任务时就会涉及到线程间通信问题。如何使各个线程之间同时执行,顺序执行、交叉执行等。
一、线程同时执行
创建两个线程a和b,两个线程内调用同一个打印 1-3 三个数字的方法。
1 package tjt; 2 3 import java.time.LocalDate; 4 5 public class Test { 6 7 /** 8 * 创建两个线程a和b,两个线程内调用同一个打印 1-3 三个数字的方法。 9 */ 10 private static void situationOne() { 11 Thread a = new Thread(new Runnable() { 12 @Override 13 public void run() { 14 doSomething("a"); 15 } 16 }); 17 Thread b = new Thread(new Runnable() { 18 @Override 19 public void run() { 20 doSomething("b"); 21 } 22 }); 23 a.start(); 24 b.start(); 25 } 26 27 /** 28 * 依次打印 1, 2, 3 三个数字 29 * 30 * @param threadName 31 */ 32 private static void doSomething(String threadName) { 33 int i = 0; 34 while (i++ < 3) { 35 try { 36 Thread.sleep(200); 37 } catch (InterruptedException e) { 38 e.printStackTrace(); 39 } 40 System.out.println(LocalDate.now() + " Thread " + threadName + " is doing, printing: " + i); 41 } 42 } 43 44 public static void main(String[] args) { 45 situationOne(); 46 } 47 }