(原创)多线程设计模式 序言

简介:

线程不是目的,而是方法和手段。

在程序中我们为什么要使用到多线程,如何使用多线程,根据我学习的体会应该考虑到下面几个问题:

1、运算时间
这是选择多线程的必要条件。如果一段代码非常耗时,在他工作的时间内程序失去响应,这是无法忍受的。一般情况下会把这段代码放到一个独立的线程里面,这样在他运算的过程中,程序还可以继续处理其他事情。当然,如果是不一般的情况,比如说你的程序就完成这么一个运算任务,然后就结束了,运算过程中程序也不需要作其他工作,就没必要开起一个线程了。

2、数据访问特点
数据访问特点是考虑选择什么样的多线程模式必须参考的条件。比如说数据是只读的还是读写的,如果是只读的,一般情况下就不需要考虑互斥性,可以多个线程同时访问数据。如果是读写的,一个线程在读取的同时,另一个线程在改写数据,这样很可能得不到正确的数据,所以一般情况下,都要对可读写数据进行互斥保护。

关于数据访问特点另一个需要考虑的因素是,工作线程对所访问的数据是否有条件限制。比如说,一个线程在不停的改变数据,一会变为正数,一会变为负数;而另一个线程的工作是获取数据的平方根,因此,这个线程在工作之前就必须测试数据访问条件,如果是正数当然可以工作,如果是负数就必须等待。等待什么呢?当然是等待第一个线程的通知,“现在数据发生变化了,请重新尝试一下吧!”,这个工作是第一个线程改变数据状态后完成的。

3、线程数量和数据吞吐性
一般情况下,同时工作的线程越多,数据吞吐性越好,但是在考虑到互斥保护的时候,又不能让太多的线程同时工作,在保证数据线程安全的情况下,尽量增大数据吞吐性,所以这也是在选择多线程模式时需要考虑的两个因素。

再遇到需要使用多线程的情况,只要确定了这几个特点,基本上就能知道选择什么样的多线程模式了。




本文转自左洸博客园博客,原文链接:http://www.cnblogs.com/myqiao/archive/2006/04/17/377217.html,如需转载请自行联系原作者


目录
相关文章
|
8月前
|
设计模式 监控 安全
多线程设计模式【多线程上下文设计模式、Guarded Suspension 设计模式、 Latch 设计模式】(二)-全面详解(学习总结---从入门到深化)
多线程设计模式【多线程上下文设计模式、Guarded Suspension 设计模式、 Latch 设计模式】(二)-全面详解(学习总结---从入门到深化)
128 0
|
8月前
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
6月前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
99 1
|
6月前
|
设计模式 存储 缓存
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
68 0
|
6月前
|
设计模式 缓存 安全
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
54 0
|
6月前
|
设计模式 并行计算 安全
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
63 0
|
6月前
|
设计模式 安全 Java
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
137 0
|
8月前
|
设计模式 存储 安全
C++多线程管理的艺术:从基础到设计模式
C++多线程管理的艺术:从基础到设计模式
120 0
|
8月前
|
设计模式 存储 Java
多线程编程设计模式(单例,阻塞队列,定时器,线程池)(四)
多线程编程设计模式(单例,阻塞队列,定时器,线程池)(四)
136 1
|
8月前
|
设计模式 Java 开发者
一目了然!谁能想到Java多线程设计模式竟然被图解,看完不服不行
多线程设计模式在Java编程中起着至关重要的作用,它能够有效提高程序的执行效率,使得程序在处理大量数据和复杂任务时更加高效。然而,对于初学者来说,理解和应用多线程设计模式可能是一项相当具有挑战性的任务。为了让读者更加轻松地掌握这一复杂主题,我们带着一种全新的图解方式,深入剖析Java多线程设计模式的精髓。