黑马程序员--关于多线程

------- android培训java培训、期待与您交流!   ----------

 

进程的概念:
          进程是一个正在执行中的程序。
          每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。

          线程:就是进程中的一个独立的控制单元。
          线程在控制着进程的执行。
          一个进程中至少有一个线程。
          Java 虚拟机允许应用程序并发地运行多个执行线程。
定义一个线程:
         通过API我们可以看到线程的实现方法,一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的run 方法。接下来可以分配并启动该子类的实例。
          

         还有一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。也就是实现了自己自定义的方法
         

         两者有一个不一样的地方就是一个是Thread在运行这个run方法, 另外一个是由Runnable 的子类, 也就是自定义的这个类来运行  run方法,实现Runnable接口避免了单继承的局限性。大致的功能是一样的, 它们都是通过star()方法开启线程并运行线程,
         为什么要覆盖Run方法:
 我们需要执行多条线程,通常情况,我们定义一个方法,只能被相对应的类对象访问,如果要执行并发性访问,这时候就需要用多线程,于是JAVA的Thread就提供了一个RUN方法,用于存储我们的自定义方法,然后通过Thread或者Runnable可以同时访问到这个Run方法,这就是实现了多线程这个概念。
       线程的执行权: 
因为是由JVM来控制这个线程,与windows底层的接口做交互动作,所以就成了计算机来控制线程的执行权,我们无法控制线程的执行权,但是我们可以设置线程的同步,以达到线程并发性访问动作。
       线程的状态:
线程开启具有执行资格,但是没有执行权,当CPU拿到执行权后线程才会被执行。
于是就有了2种状态: 

①阻塞式:等待。有执行资格,木有执行权。
②冻结:睡眠。直接放弃执行权,直到他被唤醒。
灭亡:线程结束。 
稍后会用一个实例来说明这个现象。 

       访问(多线程的安全同步 ?同步:不同步): 
首先,需要一个共享资源, 因为是多个线程的同时访问,多个线程执行同一个方法,比如说CPU是四核的,那么一个核心执行一条线程,四个核心就执行了4条线程,并且是同时执行的,那么就出现了4个线程执行一个方法,所以多线程是不同步的,由于不同步那么如果我们如果要执行并发性的问题就不行了。
       解决方案(前提是必须要有2条或者2条以上的线程,一条线程无需同步,并且这2条线程要共用一个锁的对象):
 基于并发性问题,线程提供了一个同步代码块的功能,synchronize
执行多个方法,我们可以用 synchronize 将方法锁上,如图:
         
由于CPU执行太快,我们可以使用一个wait方法便于观看。

 

 ------- android培训java培训、期待与您交流!   ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值