多线程并发执行时,不同的线程执行的内容之间可能存在一些依赖关系,比如线程一执行a()方法和c()方法,线程二执行b()方法,方法a()必须在方法b()之前执行,而方法c()必须在方法b()之后执行。这时两个线程之间就需要协作才能完成这个任务,使两个线程协作有一个简单粗暴的方法,即监控布尔变量,代码如 ...
分类:
编程语言 时间:
2018-06-23 20:52:14
阅读次数:
173
守护线程 java中有两种线程:一种是主线程,一种是守护线程。 用户线程是指:用户自定义创建的线程,主线程停止,用户线程不会停止。 守护线程:当进程不存在或主线程停止,守护线程也会停止。 使用setDaemon(true)方法设置为守护线程 多线程的运行状态: 线程从创建、运行到结束总是处于下面五个 ...
分类:
编程语言 时间:
2018-06-14 11:33:22
阅读次数:
169
1、问题 1.1 产生的原因 系统有两个线程在跑,每个线程有两个锁,当线程一用了锁1,这个时候jvm调用线程二用了锁2,这个时候线程二不能打开锁1,程序就一直停在这里了 1.2 具体问题 有两个人Aman和Bman去执行刺杀任务,看成两个线程,老板那里只有一把匕首,要刺杀的只有一个人。Aman拿到了 ...
分类:
编程语言 时间:
2018-06-12 22:32:25
阅读次数:
152
1、什么是异步 如果一个程序调用某个方法,等待其执行所有处理后才继续执行,我们称这样的方法是同步的。 如果一个程序调用某个方法,在该方法处理完成之前就返回到调用方法,则这个方法是异步的。 异步的好处在于非阻塞,因此我们把一些不需要立即使用结果、较耗时的任务设为异步时,可以提高程序的运行效率。 2、异 ...
分类:
编程语言 时间:
2018-06-12 13:33:45
阅读次数:
186
方式一: 继承Thread类. /* * main函数也叫主函数(也叫主线程), * 因为所有代码的执行都是从这里开始的. ... ...
分类:
编程语言 时间:
2018-06-07 21:58:59
阅读次数:
168
开启线程的两种方式 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别 谁的开启速度快 瞅一瞅pid 同一进程内的线程共享该进程的数据? 线程相关的其他方法 主线程等待子线程结束 守护线程 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运 ...
分类:
编程语言 时间:
2018-06-04 11:31:47
阅读次数:
213
多线程(理解) (1)Lock锁 为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。 Lock: void lock(): 获取锁。 void unlock():释放锁。 ReentrantLock是Lock的实现类. (2)死锁问题的描述和代码体现 同步的弊端: A:效率 ...
分类:
编程语言 时间:
2018-06-03 21:36:20
阅读次数:
315
在上一篇中我们讲解了多线程的一些基本概念,并举了一些例子,在本章中我们将会讲解线程池:ThreadPool。 在开始讲解ThreadPool之前,我们先用下面的例子来回顾一下以前讲过的Thread。 上面是启动一个线程的代码,结果如下: 下面讲解一下在Thread中常见的几个方法: 1、Suspen ...
分类:
编程语言 时间:
2018-06-02 11:30:41
阅读次数:
122
线程通信 一. 传统的线程通信 Object类提供了三个方法由同步监视器调用。分为两种情况 对于使用synchronized修饰的同步方法,因为该类的默认实例(this)就是同步监视器,所以可以在同步方法中直接调用这三个方法。 对于使用synchronized修饰的同步代码块,同步监视器是synch ...
分类:
编程语言 时间:
2018-05-18 21:22:40
阅读次数:
162
使用多线程以及线程池的意义无需多说,要想掌握线程池,最好的方法还是自己手动去实现。 一、实现思路 (网络盗图) 总的来说,所有的任务在BlockingQueue中进行等待,由Worker进行具体的操作,Worker才是真正的工作线程。 二、代码 1、线程池类 2、Task类(需要被线程处理的任务类) ...
分类:
编程语言 时间:
2018-05-18 01:22:17
阅读次数:
262