1.使用valatile关键字
使用volatile关键字的作用:
1- 当其他线程对变量做改变时,能够及时的反映到当前线程中
2- 确保当前线程对变量的修改,能够及时的写回共享主内存中,并被其他线程所见
3- 使用volatile声明的变量,编译器会确保其有序性
2.使用同步关键字synchronized
synchronized使用情况:
1- 使用在方法中
public synchronized void method() {}
当method方法被调用时,需要获取当前对象的锁,如果当前对象的锁被其他线程持有,则调用线程会等待,当其他线程调用结束后,锁会释放,当前线程获取到锁后才能执行。
2- 使用在代码块中
synchronized (this) {
System.out.println("bbbbbbbbb");
}
当一个方法内部不需要同步的代码执行时间比较长的时候可以使用代码块同步的方式
3- synchronized用于static
public synchronized static void method3() {
}
当synchronized用于static方法时,相当去将锁加在了class对象之上,所有调用方法时需要获得class对象的锁,儿class对象只有一份。
3.使用wait、notify、notifyAll
4.ReentrantLock重入锁
ReentrantLock在jdk6以前的版本中性能较synchronized高,在6及其后的版本中基本相同,不做介绍
5.ReadWriteLock读写锁
读写锁在多线程读的时候可以并行,因此效率较串行的锁效率高。
public class ReadWriteLockTest {
private static Lock lock = new ReentrantLock();
private static ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private static ReadLock readLock = readWriteLock.readLock();
private static WriteLock writeLock = readWriteLock.writeLock();
private static Integer value;
public Object handleRead() throws InterruptedException {
try {
lock.lock();
Thread.sleep(10);
return value;
} finally {
lock.unlock();
}
}
public void handleWrite(int index) throws InterruptedException {
try {
lock.lock();
Thread.sleep(10);
value = index;
} finally {
lock.unlock();
}
}
public Object handleRead2() throws InterruptedException {
try {
readLock.lock();
Thread.sleep(10);
return value;
} finally {
lock.unlock();
}
}
public void handleWrite2(int index) throws InterruptedException {
try {
writeLock.lock();
Thread.sleep(10);
value = index;
} finally {
lock.unlock();
}
}
}
6.Condition对象
暂不介绍
7.ThreadLock线程局部变量
ThreadLock也是一种并发线程访问变量的控制方法,但是与同步有本质的不同,ThreadLocal不提供锁,而是使用的空间换时间的方法,为每一个线程提供变量的副本,以保证线程的安全。
分享到:
相关推荐
Java程序性能优化是每个开发人员都需要关注的重要领域,它涵盖了多个方面,旨在提高代码执行效率,减少资源消耗,以及提升应用程序的稳定性和响应速度。在本文中,我们将深入探讨Java性能优化的关键点,帮助你的Java...
《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优...
java程序性能优化Java是目前应用最为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的...
8. **并行性能分析**:通过性能分析工具,如gprof、perf等,可以了解并行程序的性能瓶颈,优化代码以提高效率。 9. **并行度**:并行度是指并行程序中可以同时执行的任务或线程数量。选择合适的并行度可以平衡计算...
Java优化编程是提升Java应用程序性能的关键技术,涵盖了多个方面的知识,包括代码优化、内存管理、垃圾回收、并发处理以及JVM参数调优等。以下是对这些主题的详细讲解: 1. **代码优化**:编写高效的Java代码是优化...
Java 8 是一个重要的 Java 发行版本,引入了许多新特性,其中并行计算是其一大亮点。本示例通过利用Java 8的...总的来说,Java 8的并行计算是提高程序性能、尤其是大数据处理效率的重要工具,值得开发者掌握和应用。
Java程序性能优化是每个开发人员都需要关注的重要领域,特别是在企业级应用中,高效稳定的Java程序能够显著提升用户体验,降低服务器资源消耗。这本书“Java程序性能优化 让你的Java程序更快、更稳定”提供了深入的...
Java 并行编程是利用多核处理器或者分布式计算资源来提高程序执行效率的重要技术。在Java 1.7版本中,引入了一套强大的并行框架,使得开发者能够更方便地编写出高效、可扩展的并发应用程序。这个压缩包文件...
第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 实战...
Java串行程序并行化执行是提升应用性能的关键技术之一,尤其在大数据处理和多核处理器环境下。通过将原本顺序执行的任务分解为多个子任务,然后并发地执行这些子任务,可以显著提高程序运行效率。CGLIB(Code ...
7. **性能分析与优化**:学习如何使用性能分析工具(如gprof、VTune)来定位并行程序的瓶颈,通过算法优化、负载均衡、减少通信开销等方式提升性能。 8. **案例研究**:通过历年真题,可以深入理解并行计算在实际...
Java是目前应用最为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。 ...
《Java程序性能优化》这本书是Java开发者不可或缺的参考资料,它深入浅出地讲解了如何提升Java应用程序的效率和稳定性。本书结合理论与实践,既包含了基础的性能优化原则,也探讨了高级的优化技巧,适合从初级到中级...
数据流Java并行程序设计模型的设计目标是为了解决传统Java模型的不足之处,即建立在虚拟机内部机制以及类库的基础之上,通过采纳协同设计方案的方式,使得虚拟机内部完成包括模型性能优化以及动态设计优化在内的相关...
总结来说,CGLIB在Java中提供了一种强大的动态代理机制,可以用来实现并行程序的串行化执行。通过拦截并行任务的调用,我们可以确保任务的执行顺序,以满足特定的业务需求。对于那些对执行顺序有严格要求或者需要...