
为什么要用线程呢在什么时候用到!
展开全部
呵呵 想理解多线程你就得 搞清楚什么是并发 什么是并行 ,概念:在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(parallel)。我也有段时间纠结于这里,无论如何我必须得给你明确一点:在某一个时间点,一个CPU(单)只会运行某一个进程里的单个线程,所以我们经常称之为并发,说道同步机制,其实多线程并未真正实现微观意义上的同步,进程是一个运行单元,线程则是更小的运行单元,简而言之,就是进程细分成多个线程,譬如:一个进程A运行需要1s,它就会切换到进程B,但是实现多线程机制后,进程A细化成10个线程,每个线程只需运行0.1s,当然B线程也一样,这就出现,线程之间的切换时间更短,从宏观上看就出现同步幻象了。所以学习多线程你得真正理解所谓的同步并发,并不是真正的“同步”。当你理解这些的时候,你就初略的感觉什么时候该使用多线程机制,其实你的电脑每个程序都至少有一个主线程,那个管理器中的每一个进程,其实内部包含若干线程,每个时间点都是某个程序进程中的某个线程在运行。这些都是我的理解 ,还有不懂的请继续提出,我会尽量帮你解答。
追问
嗯谢谢啊
还有就是我想问一个是实际点的问题
比方我做一个项目火车票系统(旅客信息存在一个文件之中不使用数据并且不联网的情况下)
怎么才能当一个旅客订一张票之后其他旅客就不能订了呢
(注:我每次是启动程序之后从文件读取的信息所以所无法保证实时同步更新,请问该怎么办呢?)
追答
对象锁,即synchronized ,用这个修饰run方法,当一个线程进入运行run方法,这个方法就上锁了,别的线程就用不了,等到这个线程用完,锁就打开了别的线程重复此机制,具体你自己去查查synchronized概念 呵呵
2017-07-24 · 知道合伙人互联网行家
关注

展开全部
Java网络编程的时候 会使用到多线程 网络编程的许多方法会引起阻塞 所以必须开一个线程
比如 服务器 接收客户端 但是服务器并不知道客户端何时连接进来 所以它会一直等待
这时的等待会引起应用程序无法响应 因为程序的主线程被 占用了
所以 服务器需要开线程
比如 服务器 接收客户端 但是服务器并不知道客户端何时连接进来 所以它会一直等待
这时的等待会引起应用程序无法响应 因为程序的主线程被 占用了
所以 服务器需要开线程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你举个生活中的例子。
我们去火车站买票,但是那些票都是在一个大的系统中,哪些票卖出去到处都是同步的。
当你要买票的时候有人控制了这一张票了 别人就不能去控制这张票了,有人退票了 到处都要看到。这样的话那就需要不同的运行状况来解决,这样就要用线程来控制了。
我们去火车站买票,但是那些票都是在一个大的系统中,哪些票卖出去到处都是同步的。
当你要买票的时候有人控制了这一张票了 别人就不能去控制这张票了,有人退票了 到处都要看到。这样的话那就需要不同的运行状况来解决,这样就要用线程来控制了。
更多追问追答
追问
能再具体点吗谢谢了讲清楚了送上100分绝不食盐
追答
我觉得解释的很清楚了啊。
那再换个例子
我们在用自己的电脑的时候 我们可以边聊qq 边听歌 边回答百度知道。
这个时候我们用的是一台电脑 只有一个cpu的状态,这个时候我们是不是要等百度知道回答完才能去听歌?当然不是了 我们的歌还是在后台运行着 只不过我们现在没去动他
再比如我们在玩电脑 但是想吃饭 但是我们可以叫别人帮你打饭 这个人就是你在玩电脑的时候new 出来的一个新的线程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多线程适应于并发环境的需求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单的场景。。
一个服务端 需要同时 响应 很多客户端的(并可能耗时的)请求。
因为默认的一个程序是线性执行的。 当一件事需要耗时很久。 后面的访问就需要排队。
举个例子。
火车售票点 向外提供服务。。 如果是单线程。 当人多时 ,基于火车售票程序本来就慢。于是需要排很长的队。 才能响应所有人的购票。
如果火车售票点 添加一个售票人。 相当于多个人并发 提供 火车售票服务。。 这样,就能支持更多的售票请求。
至于你说的那个 售票程序。 建议你看一下生产者模式。
这个模式可以解决你的俩个问题。
1 多线程环境下。 如果没票了怎么办。
2. 多人订一张票的情况。
一个服务端 需要同时 响应 很多客户端的(并可能耗时的)请求。
因为默认的一个程序是线性执行的。 当一件事需要耗时很久。 后面的访问就需要排队。
举个例子。
火车售票点 向外提供服务。。 如果是单线程。 当人多时 ,基于火车售票程序本来就慢。于是需要排很长的队。 才能响应所有人的购票。
如果火车售票点 添加一个售票人。 相当于多个人并发 提供 火车售票服务。。 这样,就能支持更多的售票请求。
至于你说的那个 售票程序。 建议你看一下生产者模式。
这个模式可以解决你的俩个问题。
1 多线程环境下。 如果没票了怎么办。
2. 多人订一张票的情况。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询