开发者学堂课程【Java 面试疑难点串讲1:面试技巧及语言基础:多线程工具类】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/24/detail/503
多线程工具类
内容介绍
一、多线程同步处理
一、多线程同步处理
简介:在实际的开发之中多线程的同步处理最初提供的是一个 svnchronized 关键字,这个关键字可以实现多个线程访问同一资源的同步处理,但是如果直接采用这样的类负责操作,整体的难度是很高的。
例如:现在所有的子线程都是通过 main(线程)开始的,那么这样一来的话很明显主线程应该在所有子线程执行完毕后执行,而对于这样的操作控制,如果直接用户自己来实现会非常的麻烦,这样为了解决同步的问题,在 JDK 1.5之后引入了一 java.util.concurrent 开发包,那么这个开发包的目的主要是为了解决多线程的实现工具类问题。
可以把这个开发包之中所有的程序类简单的理解为线程的工具类,线程的工具类里面就提供有一些线程的支持法。
例如:如果自己手工实现线程的暂停以及恢复执行,那么有很大的程度上会出现有死锁的概念( stop 之类的方法不建议在线程中使用了),那么为了解决这些数据的同步处理操作,所以 java.util.concurrent 就可以实现这一系列的辅助功能。
范例:观察程序锁
package cn.mldn.demo;
import java.util.concurrent.locks.ReentrantLock;
class Message {
private final ReentrantLock lock = new ReentrantLock( );
private static int count = 0 ;
public void print() {
this.lock.lock(); //
你要上厕所,大号,进门锁门
try { // 开始裤衩裤衩的折腾
System. out . println(Thread.current Thread().getName()+"="+this.count++);] finally {
this.lock.unlock(); //折腾完了你的出门,擦屁股解锁开门走人
public class MessagesDemo {
public static void main(String[] args) {
public classMessagesDemo {
public static void main(String[] args) ffor (intx=0;x<10;x++) new Thread(().. -> {
new Message(). print();
start() ;
注:如果此时不使用这个类,那么就需要参考之前编写的生产者和消费者模型了,自己编写 wait()、notify() 之类的调用方法,这些都是工具类,用的时候按照固定的格式使用即可。