多线程基础

java 多线程内容总结:

1.多线程的创建

2.中断线程

3.线程状态

3.线程属性

4.同步

5.阻塞队列

一,.线程的创建

 有两种方式,继承Thread类或者实现Runnable接口

 两者区别

1.java是单继承的,只能继承一个类,

2.不能共享实例变量

三,线程状态

New(新创建)

Runnable(可运行)

Blocked(被阻塞)

Waiting(等待)

Timed Waiting(计时等待)

Terminated(被终止)


新创建线程:当用new操作符时线程处于新创建状态,线程还没开始,如 new Thread (r),运行之前还有一些基础工作要做


可运行:一旦调用start方法线程即可进入可运行状态,有可能运行,也没运行,取决于操作系统给提供的时间片

被阻塞线程:当一个线程试图获取一个内部的对象锁,而该锁被其他对象持有,即进入阻塞状态,当其他线程释放该锁的时候,线程调度器分配给本锁的时候处于非阻塞状         态

线程等待:等待另一个线程通知调度器一个条件时,进入等待状态,在调用Object.wait() Thrad.join() Lock condition 


线程计时等待:有几个方法有计时等待作用,一直等到时间到或者是受到适当的通知,该类方法有:            Thread.sleep(),Object.wait(),Thread.join(),Lock.tryLock(),Condition,await()

线程被终止:

1.run()方法运行结束,正常退出

2.因为一个异常而死亡

如何更好的退出线程在后续的专门文章里详写

四.线程的属性

1.线程优先级

2.守护线程

线程优先级:线程调度器选择线程是他会选择优先级高的线程

yield()

导致当前线程处于让步状态

守护线程:为其他线程提供服务


五,线程同步

如何做到同步:

1.锁对象

2.条件对象

        3.synchronized

        

public class test(){

   private Lock testLock=new ReentrantLock();

    public void update(){

           testLock.lock();
     try{
     //做一些更新操作

      }catch(){
       }finally{
       testLock.unLock();

 
}
}



}
一旦一个线程封锁了锁对象,其他任何线程都无法获得操作机会,进入阻塞状态,直到该线程释放该锁


public class test(){

   private Lock testLock;
   private Condition testCondition; 


   public test(){

   testLock=new ReentrantLock();
   testCondition=testLock.newCondition();
    }
    public void update(){

           testLock.lock();
     try{

    while(一些条件){
    testCondition.await();
      }
     //做一些更新操作
    testCondition.signalAll();
      }catch(){
       }finally{
       testLock.unLock();

 
}
}



}

线程进入临界区之后发现满足某一条件之后才能运行

条件对象管理哪些已经获得了但是不能做有用工作的线程

signalAll()方法之后不能立马激活一个线程,只是解除等待的阻塞状态

3.synchronized


public synchronized void method(){

while(条件){

wait();

//

notifyAll()


}

}


每个对象都有一个内部锁,并且该锁都有内部对象


同步阻塞

public void update(){

  synchronized( obj ){


///

///

}


}


六,阻塞队列


   专门在其他文章里详解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值