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

多线程

时间:2020-07-30 10:47:15      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:focus   als   实现   syn   des   expand   多线程   强制   executor   

多线程

创建线程的两种方式

1.继承Thread类,重写它的run方法;

2.实现Runnable接口,重写它的run方法;

延时睡眠

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释放锁

死锁

某一同步块拥有两个以上对象的锁时,可能发生死锁

处理方法:

避免两条线程同时拥有一个锁

线程池

两个相关api :Executors(线程池工具类) ExecutorService(线程池接口),通过这两个api创建线程池,设置线程池大小, 用execute方法把线程放入线程池,用完要用shutdown方法结束线程池

多线程

标签:focus   als   实现   syn   des   expand   多线程   强制   executor   

原文地址:https://www.cnblogs.com/yang-1023/p/13401576.html

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