线程原理

线程同步:

同步方法中可以使用特定的方法对线程进行调度,主要有如下方法:

     

     void notify()

  唤醒在此对象监视器上等待的单个线程。

  void notifyAll()

  唤醒在此对象监视器上等待的所有线程。

  void wait()

  导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

  void wait(long timeout)

  导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。

  void wait(long timeout, int nanos)

  导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量

 

线程工作原理:

       线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。

一般,线程具有就绪、阻塞和运行三种基本状态。

线程状态:

新线程态:

      产生一个Thread对象就生成一个新线程。当线程处于"新线程"状态时,仅仅是一个空线程对象,它还没有分配到系统资源。

可运行态:

       调用线程的run()方法。在这时线程处于可运行态。该状态不称为运行态是因为这时的线程并不总是一直占用处理机。

非运行态:

       当调用wait(),suspend(),sleep()方法时进入非运行态。

死亡态:

       当run()方法返回,或别的线程调用stop()方法,线程进入死亡态 。

synchronized :

         代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行。 它包括两种用法:synchronized 方法和 synchronized 块。

 

synchronized 方法:

     通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。

synchronized 块:

       声明一段代码段,代码段中必须有类实例。

死锁:

      死锁有几种情况,这里介绍一种:A,B线程都需要访问C,D资源,并且A正在访问C,B正在访问D,A等待B释放D,而B等待A释放C,此时处于死锁状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值