多线程
为不为
这个作者很懒,什么都没留下…
展开
-
线程池的运用
当有很多线程的时候就可以用到线程池了 ExecutorService executor = Executors.newFixedThreadPool(3);这是创建3个固定的线程池,如果线程有4个,则另一个只能处于等待状态public class App { public static void main(String[] args) { List<Task> tasks =原创 2017-10-20 08:42:26 · 188 阅读 · 0 评论 -
java多线程之(synchronized)
public class MyThread { private static int i=5; public static synchronized void print(String a) { if(a.equals("a")) { i--; System.out.println("a "+i); }else { i=i-2; System.out.print...原创 2018-12-21 11:07:42 · 110 阅读 · 0 评论 -
java多线程(6)
假设这里有一个系统,大概每秒需要处理5万条数据,这5万条数据为一个批次,而这每秒发送的5万条数据需要经过两个处理过程,第一步是数据存入数据库,第二步是对数据进行其他业务的分析 使用线程池的方式的话,可以实现指定线程的数量,这样的话就算再多的数据需要入库,只需要排队等待线程池的线程即可,就不会出现线程池过多而消耗系统资源的情况 import java.util.concurrent....原创 2018-05-19 11:03:05 · 135 阅读 · 0 评论 -
java多线程(5)
线程计数器 CountDownLatch CountDownLatch:它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行 public class SummonDragonDemo { private static final int THREAD_COUNT_NUM = 7; private static CountDownLatch countDownL...原创 2018-05-19 10:25:37 · 162 阅读 · 0 评论 -
java多线程(4)
ReentrantLock ReentrantLock 是重入锁的意思,实现了Lock接口 ReentrantLock 可以实现线程间的同步,用Condition实现线程间的通信, synchronized 与 wait() 方法和 notify() 方式结合实现线程间通信的时候,notify/notifyAll 的通知等待的线程时是随机的,而condition可以实现选择性通知 impo...原创 2018-05-19 10:03:42 · 119 阅读 · 0 评论 -
java多线程(2)
1.synchronized 锁重入:线程请求由自己持有的对象时,如果该锁是重入锁,请求就会成功,否则阻塞 2.synchronized出现异常时,锁自动释放 3.当多个线程要同一个实例时 双重校验锁 public class DubbleSingleton { private static volatile DubbleSingleton instance; publ...原创 2018-05-17 14:02:39 · 115 阅读 · 0 评论 -
java多线程知识(1)
基础概念 1.线程和进程: 进程有自己的独立空间,而线程共享进程的空间 线程通信方便,同一进程的线程共享全局变量,静态数据 多进程更健壮,多线程只要有一个线程死掉,整个进程也死 2.同步和异步:同步必须等该方法的调用返回 3.并行和并发:并发只是两个任务切换速度快 4.线程安全:当多个线程访问一个类时,这个类始终正确,则这个类是线程安全的(经常用锁) 5.一个对象有一把锁,多个线程...原创 2018-05-17 13:52:41 · 117 阅读 · 0 评论 -
java多线程相关知识
带参数的join方法,表示至多等待线程A的时间,而无参数的join方法,则会一直等待线程A执行结束 等待时wait会释放锁,而sleep一直持有锁 BlockingQueue 伪异步机制就是根据这个实现的 volatile 它所修饰的变量不保留拷贝,直接访问主内存中的。 在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性...原创 2018-02-26 09:29:05 · 199 阅读 · 0 评论 -
java多线程-基础概念
基础 join()方法:在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。 wait方法: 调用obj的wait(), notify()方法前,必须获得obj锁,也就是必须写在synchronized(o原创 2017-10-14 13:38:32 · 181 阅读 · 0 评论 -
java 多线程之-阻塞队列
public class BlockingQueueApp { static class BlockingQueue<T>{ private Queue<T> queue=new LinkedList<>(); private int capacity; private Lock lock=new ReentrantLock();原创 2017-10-14 12:55:20 · 178 阅读 · 0 评论 -
java多线程-生产者消费者
生产者消费者是最简单的java多线程例子之一,由生产者生产出东西,然后消费者消费,分别有两个线程调用生产者和消费者。public class App { public static void main(String[] args) { final Processor processor=new Processor(); Thread thread1=new T原创 2017-10-14 12:37:29 · 343 阅读 · 0 评论 -
java多线程-synchronized对象和方法的区别
public class App { public static void main(String[] args) { System.out.println("Synchronized Objects: "); Worker worker = new Worker(); worker.main(); System.out.pri原创 2017-10-14 10:51:08 · 237 阅读 · 0 评论 -
java多线程-简单转账
/** * Created by gmy on 2017/10/14. */ public class App { public static void main(String[] args) throws InterruptedException { final Runner runner=new Runner(); Thread t1=new Thre原创 2017-10-14 10:16:03 · 2202 阅读 · 0 评论 -
精通多线程(一)-死锁
/** * Created by gmy on 2017/10/14. */ public class SimpleDeadLock { public static final Object lock1=new Object(); public static final Object lock2=new Object(); private int index; pu原创 2017-10-14 08:51:16 · 196 阅读 · 0 评论 -
java多线程间的通信
wait/notify 1.wait 方法是释放锁,notify 方法是不释放锁的 2.notify 每次唤醒 wait 等待状态的线程都是随机的,且每次只唤醒一个。 public class MyList { private static List list = new ArrayList(); public static void add() { list....原创 2018-12-21 14:33:33 · 115 阅读 · 0 评论