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

简单理解线程

时间:2017-11-27 16:54:09      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:notify   not   struts   区别   wait   this   blog   代码块   重写   

  1. 线程是一个程序里面不同的执行路径
  2. 线程的状态:先创建线程对象,然后调用start()方法进入就绪状态。(但并不是会马上,等到cpu的调度之后进入运行状态,然后可能会运行的时候出问题,进入堵塞状态。也有可能终止了。
  3. 一些常用的方法:

Sleep():指定线程睡眠多长时间

Yield():让出cpu给其他线程

Notify():叫醒线程

Notifyall():叫醒所有线程

Setpriority():设定优先级

技术分享图片

 

 

 技术分享图片

 

  1. 实现线程的两种方法:

继承Thread线程类或者实现runnable接口,推荐使用实现接口的方法来实现,因为java不可以多继承。然后再重写他们的Run()方法,这个方法类似struts2里面的execute()方法,都是基类定义好需要在里面实现的。

  1. 线程同步:synchronized(this){

 需要同步的代码块;

}

或者:直接在方法中加上synchronized,创建同步方法。

只有当前代码块运行完其他对象才可以去访问当前的同步快。

需要注意的是:synchronized的有效范围只是他所控制的当前对象或者方法,而其他非synchronized的对象,方法还是可以正常访问的。

  1. 死锁:当一个线程需要某个对象才能执行,但是这个对象被其他的线程给锁住了,并且这个线程需要某个对象才能执行,而刚好被你这个对象给锁住了,就会造成死锁。解决办法就是可以把你要同步的代码块给扩大了。
  2. Wait()sleep()的区别:

首先wait()object类的方法,而sleep()thread类的。Wait()相当于把锁给放开了,别的对象可以访问你原来锁住的部分了,而sleep()却还是锁住,不可以访问。

简单理解线程

标签:notify   not   struts   区别   wait   this   blog   代码块   重写   

原文地址:http://www.cnblogs.com/weichenchq/p/7904285.html

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