Java并发编程中上锁的几种方式

前言:本文想要介绍Synchronized,ReentrantLock和ReentrantLock的Condition的相关用法。 Synchronized上锁 Synchronized可以修饰实例方法、静态方法和代码块。修饰代码块时,可以对具体的对象上锁,也可以对某个类(.class)上锁。 Synchronized是非公平锁 以下代码是通过给一个多线程能访问到的变量使用synchronized进行上锁,实现有序打印数字的功能。并且在最后会统计不同线程打印数字的次数: package com.windypath.lockcondition; public class Syn { int count = 0; final Object sth = new Object(); void play() { int loopTimes = 1000; SynThread t1 = new SynThread(loopTimes, "t1"); SynThread t2 = new SynThread(loopTimes, "t2"); SynThread t3 = new SynThread(loopTimes, "t3"); SynThread t4 = new SynThread(loopTimes, "t4"); t1.start(); t2.start(); t3.start(); t4.start(); } public static void main(String[] args) { Syn syn = new Syn(); syn.play(); } class SynThread extends Thread { int loopTimes; public SynThread(int loopTimes, String threadName) { super(threadName); this....

十二月 4, 2023 · JohnathanLin