
JavaSE-多线程
天道酬勤Victor
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java笔记-多线程之线程同步
线程同步的引入 问:为何要使用同步? 答:Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。 案例:电影院售票 需求:某电影院目前正在上映贺岁大片,共有100张票,而它有3个售票窗口售票,请设计一个程序模拟该电...原创 2018-09-15 17:28:53 · 258 阅读 · 0 评论 -
Java笔记-多线程之线程死锁问题加简单举例
死锁 导致死锁的原因 Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,因为默认的锁申请操作都是阻塞的,所以线程T1和T2永远被阻塞了。导致了死锁。 这是最容易理解也是最简单的死锁的形式。但是实际环境中的死锁往往比这个复杂的多。 可能会有多个线程形成了一个死锁的环路,比如:线程T1持有锁L1并且申请获得锁L2,而线程T...原创 2018-09-17 16:43:38 · 219 阅读 · 0 评论 -
Java笔记-多线程之线程通信
线程通信介绍 本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信 线程通信简单举例加实现 举例 例如: 生产线程和消费线程之间要进行沟通,不生产就不消费,生产一个,消费一个。 分析: 经过我们分析得知,生产和消费线程一直在互相抢占CPU执行权。 一会儿生产好几个,一会儿连续卖好几个。而且中间还会出现,吕布 女、貂蝉 ...原创 2018-09-17 16:57:16 · 209 阅读 · 0 评论 -
Java笔记-多线程之用匿名内部类创建线程
介绍 有时候我们只需要一个线程运行一次,那么我们可以使用匿名内部类创建线程的方法来创建线程。 三种创建方法 1.Thread子类匿名内部类 代码演示如下: public static void main(String[] args) { new Thread() { @Override public void run() { ...原创 2018-09-17 17:19:32 · 377 阅读 · 0 评论 -
Java笔记-多线程之线程池
介绍 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。 线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。 在JDK5之前,...原创 2018-09-17 18:20:58 · 205 阅读 · 0 评论 -
Java笔记-多线程之线程控制
线程控制 我们已经知道了线程的调度,接下来我们就可以使用如下方法对象线程进行控制。 1.线程休眠 public static void sleep(long millis):让当前线程处于暂停状态,millis参数毫秒值,即暂停时间。 代码演示如下: 1.MyThread.java: public class MyThread extends Thread { publ...原创 2018-09-15 13:22:46 · 209 阅读 · 0 评论 -
Java笔记-多线程之线程生命周期
线程生命周期 线程生命周期转换图: 线程生命周期介绍: 1、线程的生命周期:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。 2、当线程对象调用了start()方法之后,该线程处于就绪状态,Java虚拟机会为其创建方法调用栈和程序计数器,处于这个状态中的线程并没有开始运行,只是表示该线程可以运行了。至...原创 2018-09-15 14:53:51 · 185 阅读 · 0 评论