`
JadeLuo
  • 浏览: 425748 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

请您先登录,才能继续操作

java多线程提高性能写法

    博客分类:
  • java
 
阅读更多
为了提高性能,不一定要锁定this,例如,SharedResource有两个独立变化的变量:

public class SharedResouce {
    private int a = 0;
    private int b = 0;

    public synchronized void setA(int a) { this.a = a; }

    public synchronized void setB(int b) { this.b = b; }
}

若同步整个方法,则setA()的时候无法setB(),setB()时无法setA()。为了提高性能,可以使用不同对象的锁:

public class SharedResouce {
    private int a = 0;
    private int b = 0;
    private Object sync_a = new Object();
    private Object sync_b = new Object();

    public void setA(int a) {
        synchronized(sync_a) {
            this.a = a;
        }
    }

    public synchronized void setB(int b) {
        synchronized(sync_b) {
            this.b = b;
        }
    }
}

分享到:
评论

相关推荐

    jni中用多线程调用java代码

    本项目重点在于如何在JNI中利用多线程调用Java代码,这在处理大量数据或者并发任务时非常有用。 首先,理解JNI的基本概念至关重要。JNI提供了一种方式,让本地(非Java)代码可以访问和调用Java类、方法和字段。这...

    java csv大数据量导出(千万级别,不会内存溢出)

    多线程编程在Java中可以通过ExecutorService和Future来实现。创建一个线程池,提交任务(导出每个数据块)到线程池,并收集结果。每个任务内部可以使用BufferedWriter逐行写入CSV,这样即使数据量大,也不会一次性...

    Java 10 大装 B 写法,看完可以出去吹牛逼了!

    用于多线程环境下的单例模式,确保对象的唯一性,同时减少同步开销: ```java private volatile Singleton instance; public Singleton getInstance() { if (instance == null) { synchronized (this) { if ...

    JAVA实现Modbus RTU或Modbus TCPIP数据采集.rar

    1.多线程可以提高资源的利用率,可以充分利用现代多核处理器的特性,让每个线程负责处理同类型的任务,更加容易维护,同时通过异步处理提高响应性。 2.多线程之间为更方便的实现数据共享采用了共享相同内存地址...

    java输入输出流的两种写法

    - 可以通过 `PipedInputStream` 和 `PipedOutputStream` 实现线程间的通信,或者使用 `SequenceInputStream` 合并多个输入流。 8. 转换流: - `InputStreamReader` 和 `OutputStreamWriter` 可以将字节流转换为...

    同步异步多线程SOCKET通讯

    提供的"同步异步多线程SOCKET通讯.txt"文件可能包含实际的示例代码,展示了如何在Python、Java或C++等语言中实现同步和异步多线程Socket通信。这些代码可能包括创建Server端的Socket监听,创建并管理线程池,处理...

    JAVA多线程并发下的单例模式应用

    JAVA多线程并发下的单例模式应用 单例模式是设计模式中比较简单的一个,也是非常常见的,但是在多线程并发的环境下使用却是不那么简单了。今天我们将分享一个在开发过程中遇到的单例模式的应用。 单例模式的定义:...

    java SDK 类库详解

    7. **API类库**:包括java.*、javax.*、jdk.*等包,提供了大量的类和接口,涵盖了I/O、网络、多线程、集合、反射、XML处理、数据库连接等众多功能。 深入学习Java SDK类库,我们需要关注以下关键模块: - **java....

    java-单例模式几种写法

    DCL提高了性能,但涉及volatile关键字;静态内部类利用类加载机制,避免同步;枚举方式最简洁,且线程安全。 在实际开发中,根据项目需求和性能考虑,可以选择适合的单例模式实现。例如,如果资源消耗不是问题,...

    java单例模式开发的7种写法

    - **适用场景:** 虽然性能较低,但在多线程环境中可以保证线程安全。 #### 第三种:饿汉式 ```java public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} ...

    Net与Java常用代码写法对比.docx

    这些只是.NET和Java之间一些基础的代码写法对比,实际上,两种语言在异常处理、多线程、网络编程等方面也有显著的差异。理解这些差异对于跨平台开发或在两种语言间切换时非常有帮助。无论是.NET还是Java,都有其独特...

    Java Platform SE 8

    9. **改进的并发库**:Java 8对并发库进行了优化,比如Fork/Join框架和Parallel Streams,使得并行计算更容易实现,提高了多线程应用的性能。 10. **类型推断增强**:编译器在Java 8中提高了类型推断的能力,使得在...

    java多线程之定时器Timer的使用详解

    Java中的`Timer`类是用于实现定时计划任务的核心组件,它基于多线程机制,允许开发者在指定时间点或周期性地执行任务...理解这些基础知识对于Java多线程编程是非常重要的,它们可以帮助我们构建更复杂的定时任务系统。

    Java高级特性入门二.pdf

    在多线程编程中,正确地理解和使用线程池,是提升系统性能和资源利用率的关键。需要注意的是,线程池的不当使用可能会引起资源泄露、线程饥饿或死锁等问题。 总结以上内容,Java高级特性入门第二部分对Lambda表达式...

    Java设计模式之单例模式的七种写法

    这种写法的问题是它没有考虑线程安全问题,在并发环境下很可能出现多个 Singleton1 实例。 2、懒汉式单例(加同步) public class Singleton2 { private Singleton2() {} private static Singleton2 single = ...

    java1.8.zip

    8. **并发改进**:Java 1.8对并发库进行了优化,例如`ForkJoinPool`和`Parallel Streams`的改进,使得多线程编程更加高效。 9. **类型推断增强**:Java 8增强了类型推断,编译器现在可以更好地推断局部变量的类型,...

    Java 编程 :常见问题汇总

    5. **性能优化:** 对于性能敏感的应用,应当关注算法的选择和数据结构的使用,例如使用`HashSet`和`HashMap`代替`ArrayList`进行查找操作可以极大地提升性能。 通过遵循这些最佳实践,开发者可以在编写Java程序时...

    Java解惑(帮你深入地了解Java)

    3. **多线程**:Java提供了内置的多线程支持,包括Thread类和Runnable接口。线程同步机制,如synchronized关键字、volatile变量、Lock接口以及条件变量,是确保线程安全的重要工具。 4. **集合框架**:Java集合框架...

Global site tag (gtag.js) - Google Analytics