开发者学堂课程【Java 高级编程:数字加减 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/299
数字加减
多线程案例分析一
题目:设计 4 个线程对象,两个线程执行减操作,两个线程执行加操作:
package cn.mldn.demo;
public class ThreadDemo {
public static void main(String[ ] args) throws Exception {
Resource res = new Resource( ) ;
SubThread st = new SubThread(res) ;
AddThread at = new AddThread(res) ;
new Thread(at, "加法线程-A")start();
new Thread(at, "加法线程-B")start();
new Thread(st, "减法线程-X")start();
new Thread(st, "减法线程-Y")start();
class Resource {// 定义一个操作的资源
private int num = 0; //这个要进行加减操作的数据private boolean flag = true; // 加减的切换
//flag = true:表示可以进行加法操作,但是无法进行减法操作//flag = false:表示可以进行减法操作,但是无法进行加法操作。
public synchronized void add() throws Exception {//执行加法操作
Thread.sleep(100);
this.num++;
System.out.printIn("【加法操作- " + Thread . current Thread() .getName() + "】num = " + this.num);
public synchronized void sub() throws Exception {//执行减法操作Thread .sleep(200);
this.num-- ;
System. out. print1n("【減法操作- " + Thread . current Thread().getName() + "】num = " + this.num);
public class ThreadDemo {
public static void main(String[] args) throws Exception {
注:这个程序的核心本质在于:加一个,减一个,整体的计算结果应该只在0,-1,1之间循环出现。