狂神JUC——传统的Synchronized锁

JUC
1 狂神JUC——传统的Synchronized锁
2 狂神JUC——Lock锁
3 狂神JUC——Lock版生产者和消费者
4 狂神JUC——Synchronized版的生产者和消费者问题
5 狂神JUC——8锁现象彻底理解锁
6 狂神JUC——集合不安全
7 狂神JUC——走近Callable
8 狂神JUC——CountDownLatch,CyclicBarrier,Semaphore
9 狂神JUC——读写锁
10 狂神JUC——阻塞队列
11 狂神JUC——同步队列
12 狂神JUC——线程池
13 狂神JUC——7大参数及自定义线程池
14 狂神JUC——四大函数接口
15 狂神——Stream流式计算
16 狂神——链式编程
17 狂神JUC——ForkJoin
18 狂神JUC——异步回调
19 狂神JUC——单例模式
20 狂神JUC——CAS
21 狂神JUC——可重入锁
22 狂神JUC——自旋锁
package com.company;

public class SynchronizedTest {

    public static void main(String[] args) {
	Ticket ticket = new Ticket();

        new Thread(()->{
            for (int i = 0; i < 30; i++) {
                ticket.sale();
            }
        },"学生A").start();

        new Thread(()->{
            for (int i = 0; i < 30; i++) {
                ticket.sale();
            }
        },"学生B").start();

        new Thread(()->{
            for (int i = 0; i < 30; i++) {
                ticket.sale();
            }
        },"学生C").start();
    }
}

class Ticket{
    private int number = 30;

    //卖票的方式
    //synchronized 本质:队列、锁
    public synchronized void sale(){
        if(number > 0){
            System.out.println(Thread.currentThread().getName()
            + "买到了第" + (number--) + "票,剩余:" + number
            );
        }
    }
}

运行结果:
狂神JUC——传统的Synchronized锁_第1张图片

详细信息请看狂神视频

你可能感兴趣的:(JUC)