当前位置: 代码迷 >> J2SE >> 今天把多线程看完了,还有几个小问题
  详细解决方案

今天把多线程看完了,还有几个小问题

热度:78   发布时间:2016-04-23 20:21:27.0
今天把多线程看完了,还有几个问题
  我看到多线程可以把几个程序块一起运行觉得很赞,然后后面书上介绍了很多有关的东西,我就不怎么理解了。
比如:
  Sleep()可以让线程小睡一会儿,为什么要线程睡呢,程序不应该早点快速的执行完就行了么
   join()可以让其它线程等待当前线程执行完了之后在执行,虽然这个可以安排线程执行的先后了,但是这样子等来等去不就和单一线程一样了么
   同步处理的Synchronized,声明了这个之后,书上的说法就是同时只能让一个线程进入run,可是结果我看到的是声明了Synchronized之后两个线程可以共用一个变量了,是书上讲错了吗?如果是那Synchronized其实是用来干什么的,还有声明了这个之后不会让程序的执行效率变低么?
就是这些不明白,明明线程是用来让程序执行的更快的东西,怎么多了那么多貌似是降低运行速度的东西

------解决方案--------------------
问题很多啊
1、为什么要让程序睡一会,比如做一个检测系统按键的程序(一直循环检测),如果你中间不sleep一下的话,程序将会一直占用cpu导致系统卡死。
2、join,和单线程还是有区别的,并不是所有的线程都排队啊。
3、Synchronized,对某一方法或代码块进行同步控制,排斥其他线程获得锁。如果同步的是run,则同一时间只可以一个进入run,这个说起来很多,比较复杂,不是一句话能解释清楚的,慢慢理解吧。
4、虽然线程是为了程序执行更快的,但是不是所有的时候越快越好。
比如一个生产机器(相当于一个线程),如果一直生产,导致仓库都放不下了,这还好吗?那么就需要判断当仓库已经慢了的时候,让机器停一会,如果仓库库存低于一个最低值则再次让机器开始运转。
  相关解决方案