码迷,mamicode.com
首页 > 编程语言 > 详细

Thread-线程

时间:2016-10-08 01:34:41      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

  一台计算机可以同时运行多个进程,每个进程可以同时执行多个线程

  进程:a.每一个应用程序都是一个进程

     b.进程拥有独立的内存地址空间

     c.多进程的"同时"运行依赖与CPU的快速切换

  线程:a.每一个线程都是进程内部的一个独立的执行路径

     b.线程共享同一块内存空间

     c.多线程的"同时"运行依赖与CPU的快速切换

  java中的线程类:a.继承Thread类

          b.实现Runnable接口

  Thread类和Runnable接口都有一个run方法,重写该方法把该线程要执行的语句写入

  Thread类有一个start方法专门用于开启线程(直接new无法开启)

  通过实现Runnable接口的线程类没有start方法,只能将该类对象作为参数传入Thread的构造new一个对象调用start方法.

  线程的5个状态:

    新建

      ↓

    就绪

`    ↓

    运行←→中断

      ↓

    结束

  新建:new一个新对象

  就绪:从调用start方法开始到start方法方法实现中调用run方法之前

  运行:调用run方法,执行run方法

  结束:run方法结束

  中断:线程在运行过程中没有被CPU执行到

  造成中断的5种原因:

  1.由于运气不好或者优先级的原因没有抢到CPU

  优先级从1到10共10级,增加或减少抢到CPU的几率

  2.阻塞状态--专指由于I/O操作导致的线程中断

  3.主动使用线程休眠--sleep方法(休眠结束以后开始去抢CPU,而不是直接执行)

  4.等待←→唤醒

  wait方法--等待,由等待方调用

  notify方法--唤醒第一个调用wait方法的线程

  notifyAll方法--唤醒所有等待的线程

  5.挂起--粗暴的将正在被CPU执行的线程中断

  线程的安全性:当两个线程操作同一资源的时候有可能发生安全性问题

  使用关键字synchronized解决安全性问题

  使用方式:1.作为可选修饰符修饰需要同步的方法

       2.在调用资源的地方使用同步块

  同步引发的问题--死锁

  一对互相依赖执行的资源,同时被两个不同的线程同步锁上其中一个资源,形成死锁

  解决方法生产者/消费者(对wait/notify的运用)

Thread-线程

标签:

原文地址:http://www.cnblogs.com/yutanggege/p/5937050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!