
多线程
zhongbai-
这个作者很懒,什么都没留下…
展开
-
java.util.ConcurrentModificationException=null
我的错误原因是在forEach循环list的时候,并且在多线程场景下使用remove()移除元素:搜索解决办法:使用for(int i=0;i<a.size;i++)失败使用Iterator遍历list,不报ConcurrentModificationException的错误了,报多线程异常。很难了!!!解决办法:使用new CopyOnWriteArrayList<>(list);将list放入CopyOnWriteArrayList中,使用新的list进行遍历移除就可以了,原创 2022-03-10 17:01:36 · 608 阅读 · 0 评论 -
java线程池分段下载文件
控制台输入下载链接:一:实现基本的下载的功能原创 2021-12-24 14:03:41 · 1724 阅读 · 5 评论 -
使用线程池创建线程
使用线程池创建线程思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。好处:1 提高响应速度(减少了创建新线程的时间)2 降低资源消耗(重复利用线程池中线程,不需要每次都创建)3 便于线程管理 corePoolSize:核心池的大小 maximumPoolSize:最大线程数 keepAliveTime:线程没有任务时最多保持多长时间后会终止ExecutorService:真正的线程池接口。常见子类Thr原创 2021-07-16 21:19:33 · 388 阅读 · 1 评论 -
Callable创建多线程
Callable创建多线程1.创建一个实现Callable实现类2.实现call方法,将此线程所要执行的操作声明在该方法中3.创建Callable接口实现类的对象4.将此Callable接口实现类的对象作为参数传递到FutureTask构造器中,创建FutureTask的对象5.将FutureTask的对象作为参数传递到Thread类构造器中,创建Thread对象,调用start()方法futureTask.get()返回值即为FutureTask构造器参数Callable实现类重写的call(原创 2021-07-16 21:00:19 · 362 阅读 · 1 评论 -
线程的通信--生产者消费者问题
wait() 与 notify() 和 notifyAll() wait():令当前线程挂起并放弃CPU、同步资源并等待,使别的线程可访问并修改共享资源,而当前线程排队等候其他线程调用notify()或notifyAll()方法唤醒,唤醒后等待重新获得对监视器的所有权后才能继续执行。 notify():唤醒正在排队等待同步资源的线程中优先级最高者结束等待 notifyAll ():唤醒正在排队等待资源的所有线程结束等待. 这三个方法只有在synchronized方法或synchronized代.原创 2021-07-16 16:18:20 · 90 阅读 · 2 评论 -
多线程笔记
步骤:创建线程的方式2 :实现Runnable接口1.创建一个实现Runnable接口的类2.实现类去实现Runnable中的抽象方法 run()3.创建实现类的对象4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象5.通过Thread类的对象调用start()方法/** 1.创建一个实现Runnable接口的类* */class MyRunnable implements Runnable{ //2.实现类去实现Runnable中的抽象方法原创 2021-07-03 10:41:26 · 103 阅读 · 2 评论 -
Thread创建多线程笔记
Thread创建多线程步骤:多线程的创建:方式一:继承Thread类1.创建一个继承于Thread类的子类2.重写Thread类的run方法 -->将此线程执行的操作声明在run方法里面3.创建Thread类的子类对象4.通过此对象调用start()方法/** 多线程的创建:方式一:继承Thread类* 1.创建一个继承于Thread类的子类* 2.重写Thread类的run方法 -->将此线程执行的操作声明在run方法里面* 3.创建Thread类的子类对象* 4.通原创 2021-06-23 15:48:41 · 304 阅读 · 0 评论