多线程
Posted yang-1023
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。
创建线程的两种方式
延时睡眠
sleep(延时)使线程休眠不会释放锁
线程终止
定义一个标志位flag=false,不推荐使用stop(),destroy()方法
线程强制执行
join,可以想象成插队,等此线程执行完后,再执行其他线程,否则其他线程堵塞
线程通信(不同线程之间的消息传递)
wait(),notify()两个方法在一起使用
wait() 使线程处于等待状态(可加参数,设置等待豪秒数),会释放锁,
notyfy唤醒一个等待的线程,notifyall唤醒同一个对象上所有调用wait()方法的线
线程礼让
yield(),现有a,b两个线程,a先进入cpu执行,a调用yield(a从cpu中出来),使线程a处于就绪状态,然后cpu再随机调度其中一个线程
线程安全
加锁的两种方式:
synchronizey(隐式锁),lock(显示锁)
区别:
synchronizey可以作用在方法和代码块(参数)上,lock lock只能作用在代码块 lock.lock加锁 lock.unlock释放锁
死锁
某一同步块拥有两个以上对象的锁时,可能发生死锁
处理方法:
避免两条线程同时拥有一个锁
线程池
以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章