对线程的一点理解


最近写代码时  对与线程的概念有点模糊 便上网查了下有关线程的解释 使我对线程有了更多的理解 下面写的一点

东西是我对于线程的理解 也可以说是看了别人的文章后的一点启发 写这篇博客旨在和大家分享今天我之所得 写的

不对的地方希望能指点下

 

一.为什么需要线程:当程序代码必定会阻塞在一个位置的时候,为了使程序能继续运行而不受到阻塞的限制,便采

用一个线程来实现必定会阻塞的代码,这样阻塞的效果就只会影响到这个线程而不会影响到全部的程序,其实运行

的一个程序本身就是一个线程

比如说:在通信中服务器端建立服务器后,等待客户连接时就会造成阻塞。
 
   public class MyWeb{

   public static void main(String []args){
   ...
   java.net.ServerSocket server=new ServerSocket(port);
   java.net.Socket client=server.accept();//当程序运行到这时就会阻塞在这 直到有客户来连接
   ...                                      //才会执行以下的代码
   } 
 因此在这利用线程来处理,将以上的代码放在一个线程的run()方法里面执行  就不会影响到其他代码的执行了
   public class MyWeb extends Thread{
  
   public void run(){
   java.net.ServerSocket server=new ServerSocket(port);
   java.net.Socket client=server.accept();
   }
   public static void main(String []args){
    ...
    MyWeb meb=new Myweb();
    meb.start();//通过启动线程来执行可能会阻塞的代码 使其不影响到其他的代码;
    ...
    }
   程序可能不是很正确 希望能帮助理解


二.线程的几个常用方法:
  
   1.sleep()使线程休眠一段时间后自动醒来;
   如:
   Thread.sleep(1000);//表示线程休眠1秒(sleep方法中单位设置的是毫秒)后再执行
  
   2.wait()调用这个方法后 线程不能自己醒来 而要别的线程给执行notify()方法来唤醒
   
   3.yield()方法:使得线程放弃当前分得的cpu时间,但是不使线程阻塞,即线程仍然处于可执行状态,并且随时

可能再获得cpu时间;

 

三. 线程的4个基本状态:(摘自http://www.360doc.com/UserHome/15822)
  
   1 新状态:线程已被创建但尚未执行(start()尚未被调用)
  
   2.可执行状态:线程可以执行,虽然不一定正在执行。cpu时间随时可能被分配给该线程,从而使得它执行。
  
   3.死亡状态:正常情况下 run()返回使得线程死亡。调用stop()或destroy()亦有同样效果,但是不被推荐,前
者会产生异常,后者是强制终止,不会释放锁。
  
   4.阻塞状态:线程不会被分配cpu时间,无法执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值