多线程(JDK1.5的新特性互斥锁)(掌握)

多线程(JDK1.5的新特性互斥锁)(掌握)
1.同步
·使用ReentrantLock类的lock()和unlock()方法进行同步
2.通信
·使用ReentrantLock类的newCondition()方法可以获取Condition对象
·需要等待的时候使用Condition的await()方法, 唤醒的时候用signal()方法
·不同的线程使用不同的Condition, 这样就能区分唤醒的时候找哪个线程了
举例:

public static void main(String[] args) {
final UnitTest ut = new UnitTest();
Thread t1 = new Thread(new Runnable() {
public void run() {
while(true){
ut.print1();
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
while(true){
ut.print2();
}
}
});
Thread t3 = new Thread(new Runnable() {
public void run() {
while(true){
ut.print3();
}
}
});
t1.start();
t2.start();
t3.start();
}
private ReentrantLock r =new ReentrantLock();
Condition c1 = r.newCondition();
Condition c2 = r.newCondition();
Condition c3 = r.newCondition();
private int flag = 1;

public void print1() {

r.lock();
if(flag!=1){
try {
System.out.println("jinru 11");
c1.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("11");
flag=2;
c2.signal();
r.unlock();
}
public void print2() {
r.lock();
if(flag!=2){
try {
System.out.println("jinru 22");
c2.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("22");
flag=3;
c3.signal();
r.unlock();
}
public void print3() {
r.lock();
if(flag!=3){
try {
System.out.println("jinru 33");
c3.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("33");
flag=1;
c1.signal();
r.unlock();
}

时间: 2024-10-27 04:54:54

多线程(JDK1.5的新特性互斥锁)(掌握)的相关文章

JAVA JDK1.5-1.9新特性

JAVA JDK1.5-1.9新特性 1.5 1.自动装箱与拆箱: 2.枚举(常用来设计单例模式) 3.静态导入 4.可变参数 5.内省 1.6 1.Web服务元数据 2.脚本语言支持 3.JTable的排序和过滤 4.更简单,更强大的JAX-WS 5.轻量级Http Server 6.嵌入式数据库 Derby 1.7 1,switch中可以使用字串了 2.运用List tempList = new ArrayList<>(); 即泛型实例化类型自动推断 3.语法上支持集合,而不一定是数组 4

JDK1.5的新特性(1)

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

JDK1.5的新特性:javabean、注解类、类加载器

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

转: 【Java并发编程】之二十:并发新特性—Lock锁和条件变量(含代码)

简单使用Lock锁 Java5中引入了新的锁机制--Java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作.Lock接口有3个实现它的类:ReentrantLock.ReetrantReadWriteLock.ReadLock和ReetrantReadWriteLock.WriteLock,即重入锁.读锁和写锁.lock必须被显式地创建.锁定和释放,为了可以使用更多的功能,一般用ReentrantLock为其实例化

jdk1.5-1.10新特性

从网上搜集摘录的jdk特性,在这里记录下来以便自我学习. jdk5新特性    1.自动装箱和拆箱    2.枚举    3.静态导入    4.可变参数    5.內省       是Java语言对Bean类属性.事件的一种缺省处理方法.例如类A中有属性那么,那我们可以通过getName,setName来得到其值或者设置新的值.通过getName/setName来访问name属性,这就是默认的规则.Java中提供了一套API用来访问某个属性的getter,setter方法,通过这些API可以使

JDK1.5的新特性(2):反射

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

多线程编程:同时使用信号量与互斥锁

#include <pthread.h> #include <semaphore.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <cerrno> #define CUSTOMER_NUM 10 pthread_mutex_t mutex_x= PTHREAD_MUTEX_INITIALIZER; sem_t sem; int sem_val

jdk1.8排序新特性

import java.util.Collections;import java.util.List;import java.util.ArrayList;import java.util.Comparator; public class Java8Tester { public static void main(String args[]){ List<String> names1 = new ArrayList<String>(); names1.add("Googl

JDK1.9的新特性集合

原文地址:https://www.cnblogs.com/wulinmiao/p/12153011.html