比较容易理解的bash多线程实现方式
一直在找一个bash实现的多线程,虽然这个方法看着不怎么高明,但是比那个fifo的写法,看着明白点。这里面也限制了最多线程数,类似于线程池,记录在此,以备后用。 阅读全文
一直在找一个bash实现的多线程,虽然这个方法看着不怎么高明,但是比那个fifo的写法,看着明白点。这里面也限制了最多线程数,类似于线程池,记录在此,以备后用。 阅读全文
线程池的目的是为了使用有限的线程处理大并发的任务。jdk自带丰富的线程池适应不同的应用场景。一般线程池需要考虑这样四个问题… 阅读全文
java提供了对boolean、Integer、Long的原子操作对象AtomicBoolean、AtomicInteger、AtomicLong。实现一些原子操作,这样简单的原子操作会比使用synchronized或者lock实现方便很多。 阅读全文
和synchronized一样,Lock是为了线程互斥而设计的,在synchronized中,使用对象隐式锁的wait notify(notifyAll)来实现线程之间的通信,同样的功能在Lock中是通过Codition来实现的。Condition除了完成wait和notify的基本功能之外,它的好处在于一个Lock可以通过创建多个Condition,选择性的去通知wait的线程。 阅读全文
java里的Lock提供了比synchronized更灵活的线程同步操作,可以让你更自由的获取锁,释放锁。 阅读全文
ynchronized让线程之间互斥,但是有时候因为业务逻辑,需要主动释放锁,让其它的线程执行,这就需要线程之间通信,我们知道JAVA里每个对象都有个隐式锁,JAVA为每个对象都提供了wait和notify(还有notifyAll)方法,分别用于本线程主动释放锁,进入等待状态,和唤醒其它进入等待的线程。 阅读全文
ThreadLocal用于同一线程内数据共享,不同线程之间数据隔离。 阅读全文
在实现线程同步方法里,synchronized是java中最简单的方法,这里总结下具体的用法。 阅读全文
CountDownlatch和CyclicBarrier是java并发包java.util.concurrent里的两个线程辅助类,学习这两个辅助类,可以认识到两个多线程的使用场景。 阅读全文