编程-java菜鸟程序员提问:求大神给我说说线程在什么场景下用,以及多线程工作原理。谢谢

问题描述

java菜鸟程序员提问:求大神给我说说线程在什么场景下用,以及多线程工作原理。谢谢
   现在java线程编程应用广泛吗?哪些时候适合或必须要用多多线程编程呢?多线程的工作原理是怎样的呢?求大神们指导指导,谢了!

解决方案

(1)线程的工作场景主要有两条:
一个是并发操作,避免阻塞和更有效利用资源。典型的例子有:在长时间工作的程序中使用工作线程避免界面失去响应。在网络下载程序中,使用多个线程提高对网络的使用效率,更快下载文件。
一个是并行,线程是处理器调度的最小单位。如果你的计算机配置了多个处理器或者内核,那么可以同时利用多个处理器同时计算,加快问题解决的速度。
(2)多线程的工作原理:
对于单处理器系统,操作系统会轮流调度每个线程执行一小段时间,然后切换另一个线程,在切换的时候,保存当前线程使用的寄存器上下文和堆栈,并且在下次调度的时候恢复。这样线程中的程序感觉不到自己被中断过。对于多处理器系统,操作系统会将不同的线程调度给多个处理器,让它们并行执行。

解决方案二:

多线程的程序难以调试,所以相同的功能,用多线程编写的难度要大一些,除非有必要,否则不要滥用多线程。
在web中是否使用多线程要根据情况而定。一般情况下不需要。

解决方案三:

例如:
有一个任务是:将二块砖从一个地方搬到另一地方。
1.单线程:一个人一次只能搬一块。此人需三次才能完成任务.
2.多线程的同步:二个人,一个人一次搬一块,要二次完成。
3.多线程的异步:二个人,一个人一次搬一块,一次就能完成.

时间: 2024-08-30 10:04:13

编程-java菜鸟程序员提问:求大神给我说说线程在什么场景下用,以及多线程工作原理。谢谢的相关文章

十大编程算法助程序员走上大神之路

十大编程算法助程序员走上大神之路 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤:

十大编程算法助程序员走上大神路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以 在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and 

编程-新人有个关于ppl并行程序问题,求大神解答

问题描述 新人有个关于ppl并行程序问题,求大神解答 我用VC2010编程,程序里面用了ppl并行处理,调用了下parallel_for_each. 但是移植到其他没有安装VC的电脑上程序就不能运行了,在运行过程中产生错误: "this application has requested the runtime to terminate it in an unusual way." 我是做影像畸变矫正,程序移植后可以处理几张影像,然后就弹出终止程序的消息 如果我才用单线程的程序就可以处

编程c语言-这个程序详细分析~~~求大神

问题描述 这个程序详细分析~~~求大神 看了半天弄不清 解决方案 这是一个函数递归调用的例题,首先n=5,调用age函数,此时n!=1,所以直接执行else语句,t=age(4)+2,(age(4)的值等于age(3)+2)n=4>1,第二次调用age函数,再次执行else语句,返回的是t=age(3)+2,(age(2)+2)以此类推,当第五次调用age函数时,n==1,所以第五次返回的是10,所以最终的结果是10+2+2+2+2=18. 解决方案二: 总共有4层递归,最深的一层递归时n=1,

android-Android程序崩溃,求大神帮忙看看这是什么原因

问题描述 Android程序崩溃,求大神帮忙看看这是什么原因 如题,代码中没错误,但是每次运行到那个方法就自动退出了.这是Logcat中的error列表,谁知道是什么原因? 04-22 15:29:54.788: E/dalvikvm(3610): threadid=11: created from interp,name=Thread-3687 04-22 15:29:54.798: E/dalvikvm(3610): threadid=11: calling run(),name=Threa

socket编程发送消息出现socket closed求大神,急

问题描述 socket编程发送消息出现socket closed求大神,急 import java.io.DataInputStream; import java.io.EOFException; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { ServerSocket ss; Socket s ; Clients clients; Da

关于android actionbar的问题,菜鸟无法引入,求大神帮忙

问题描述 关于android actionbar的问题,菜鸟无法引入,求大神帮忙 用的android studio2.0 ,MainActivity如下 import android.app.ActionBar; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

单链表-请教C编程题,本人初学者,求大神解答,万分感谢

问题描述 请教C编程题,本人初学者,求大神解答,万分感谢 求大侠帮忙:C语言程序设计---编程题说明:以下所有题目程序应是非递归的) 编写一个函数,输出整数m的全部素数因子.例如,m=120时,素数因子为:2,2,2,3,5 请编写程序判断一个字符串是否是回文.若是回文,函数返回值为1,否则返回值为0.(回文是顺读和倒读都一样的字符串).要求: 1) 编写sub()判断一字符串是否为回文 2) 在主函数中完成数据的输入与结果的输出 3.起泡排序是把大的元素向下移,也可以将小的元素向上移,请给出下

出现频率-一道C语言编程题,本人初学者,求大神解答

问题描述 一道C语言编程题,本人初学者,求大神解答 编写程序实现功能:数据文件story.txt是一篇英文小故事,请先统计其中26个字母的出现次数. 要求一:再根据用户要求,输出某个字母的出现次数,直到用户输入#为止. 要求二:请输出出现频率最高的三个字母和它们的出现次数. 解决方案 #include #include #include int main() { int alpha[26]={0}; //用于计数26个字母出现的次数 FILE *text; //FILE 指针 char ch;