java 线程同步1 (传统方法)

来源:互联网 发布:什么是域名的定义 编辑:程序博客网 时间:2024/05/29 18:45
package com.thread;/** * 线程同步 ,子线程执行一次,主线程后在执行一次 * 大家轮流执行 *  * @author sky * */public class TraditionThread {public static void main(String[] args) {new TraditionThread().init();}public void init (){final Business business = new Business();// 直接重载父类的方法    子线程new Thread(){@Overridepublic void run() {for (int i = 1; i <=3; i++) {business.sub();}}}.start();// 主线程for (int i = 1; i <=3; i++) {business.main();}}class Business {private boolean isShouldSub = true; // true:子线程开始执行, false:主线程开始执行public synchronized void sub (){if (!isShouldSub){try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}  for (int i = 1; i <=2; i++) {  System.out.println("print sub ");}isShouldSub = false;this.notify();     }public synchronized void main (){ // true 等待 if (isShouldSub){ try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} }for (int i = 1; i <= 3; i++) {System.out.println("main");}// 执行完了之后,通知子线程执行isShouldSub = true;this.notify();}}}


原创粉丝点击