多线程-ReentrantLock

来源:互联网 发布:知乎 中国到底有多强大 编辑:程序博客网 时间:2024/06/06 09:17

ReentrantLock类实现同步:

测试1:

1)创建类MyService

package hzb;import java.util.concurrent.locks.ReentrantLock;public class MyService {ReentrantLock lock = new ReentrantLock();public void method1() {lock.lock();for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + " " + (i + 1));}lock.unlock();}}
2)创建类MyThread

package hzb;public class MyThread extends Thread {private MyService myService;public MyThread(MyService myService) {super();this.myService = myService;}@Overridepublic void run() {myService.method1();}}
3)创建类Test

package hzb;public class Test {public static void main(String[] args) {MyService myService = new MyService();MyThread mythread1 = new MyThread(myService);mythread1.start();MyThread mythread2 = new MyThread(myService);mythread2.start();MyThread mythread3 = new MyThread(myService);mythread3.start();MyThread mythread4 = new MyThread(myService);mythread4.start();MyThread mythread5 = new MyThread(myService);mythread5.start();}}
得到的结果如图所示:



由结果可以看出,当前线程打印完毕后,将锁释放,其他线程才能继续打印。




原创粉丝点击