Java-多线程并发
文章平均质量分 93
多线程详细解析及实战
yueerba126
刚满十八岁
展开
-
上报高并发处理原理与流程
XxlJob的分片功能为分布式任务处理提供了高效的方法,通过将大任务分散到多个节点上,它可以显著提高处理效率。同时,结合Redisson的并发控制工具,它能够保证任务的同步和一致性。原创 2023-11-29 17:41:10 · 264 阅读 · 0 评论 -
Java-多线程并发 详解(一篇文章带你玩转各种技术)
1.加载class 内容区该区域在方法区,将编译好的class文件加载进来静态区该区域在方法区, 将类的静态成员变量和静态成员方法,加载到方法区的静态区里面非静态区该区域在方法区,将类的非静态变量和非静态方法加载到方法区的非静态区域内(包括构造方法)Class对象对象存储在堆里,Class对象也不例外,把 class文件加载到内存中,在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。2.验证格式验证:验证是否符合class文件规范。原创 2023-07-20 15:20:28 · 198 阅读 · 0 评论 -
Java-多线程并发-8.并发与响应式编程工具库
虽然 Vert.x 有自己的HTTP服务器和其他组件,但您也可以在Spring Boot中使用它来处理异步任务、使用EventBus等。在Spring Boot中使用Vert.x实现多线程编程的方式主要是利用Vert.x的异步和事件驱动特性。根据您的具体需求和场景,Akka提供了大量的功能和选项,这些选项可以帮助您更好地实现并发和多线程编程。在Spring Boot中,您可以创建一个Disruptor Bean,这样它就可以被注入到其他组件中。现在,您可以在您的服务或控制器中注入并使用 Vert.x。原创 2023-10-30 15:34:18 · 257 阅读 · 0 评论 -
Java-多线程并发-6.线程与集合
这些Concurrent集合的设计目标是提供更高的并发性能,特别是在高并发、读多写少的场景中。在使用这些集合时,应考虑它们的特性和适用场景,以确保选择最合适的数据结构。的容量是固定的,一旦创建,就不能更改。添加元素时,如果队列已满,操作将阻塞,直到队列中有可用空间。同样,如果尝试从空队列中取出元素,操作将阻塞,直到队列中有可用元素。包提供了一系列线程安全的集合类,这些集合类被设计用于支持高并发操作,而无需使用外部同步。在设计系统或写代码时,选择合适的同步/异步和阻塞/非阻塞策略是关键。原创 2023-10-30 13:32:06 · 257 阅读 · 0 评论 -
Java-多线程并发-7.线程的包装
任何时刻,只能执行一个虚拟线程,但是,一旦该虚拟线程执行一个IO操作进入等待时,它会被立刻“挂起”,然后执行下一个虚拟线程。Java标准库还提供了一个java.util.Timer类,这个类也可以定期执行任务,但是,一个Timer会对应一个Thread,所以,一个Timer只能定期执行一个任务,多个定时任务必须启动多个Timer,而一个ScheduledThreadPool就可以调度多个定时任务,所以,我们完全可以用ScheduledThreadPool取代旧的Timer。线程池在程序结束的时候要关闭。原创 2023-07-21 11:50:38 · 275 阅读 · 0 评论 -
Java-多线程并发-5.锁
因为我们发现,任何时刻,只允许一个线程修改,也就是调用inc()方法是必须获取锁,但是,get()方法只读取数据,不修改数据,它实际上允许多个线程同时调用。StampedLock还提供了更复杂的将悲观读锁升级为写锁的功能,它主要使用在if-then-update的场景:即先读,如果读的数据满足条件,就返回,如果读的数据不满足条件,再尝试写。例如,一个论坛的帖子,回复可以看做写入操作,它是不频繁的,但是,浏览可以看做读取操作,是非常频繁的,这种情况就可以使用ReadWriteLock。原创 2023-07-21 10:33:55 · 114 阅读 · 0 评论 -
Java-多线程并发-4.线程同步
synchronized 可用于修饰普通方法、静态方法和代码块,接下来我们分别来看。当 synchronized 修饰普通方法时,被修饰的方法被称为同步方法,其作用范围是整个方法,作用的对象是调用这个方法的对象。当 synchronized 修饰静态方法时,其作用范围是整个程序,这个锁对于所有调用这个锁的对象都是互斥的。所谓的互斥,指的是同一时间只能有一个线程能使用,其他线程只能排队等待。原创 2023-07-21 10:30:01 · 446 阅读 · 0 评论 -
Java-多线程并发-3.Object类中的wait和notify方法
多个线程被唤醒后,只有一个线程能获取this锁,此刻,该线程执行queue.remove()可以获取到队列的元素,然而,剩下的线程如果获取this锁后执行queue.remove(),此刻队列可能已经没有任何元素了,所以,要始终在while循环中wait(),并且每次被唤醒后拿到this锁就必须再次判断;调用wait()方法后,线程进入等待状态,wait()方法不会返回,直到将来某个时刻,线程从等待状态被其他线程唤醒后,wait()方法才会返回,然后,继续执行下一条语句。原创 2023-07-21 10:09:01 · 302 阅读 · 0 评论 -
Java-多线程并发-2.线程方法
名称含义更改线程的优先级暂停当前正在执行的线程对象,并执行其他线程在指定的毫秒数内让当前正在执行的线程休眠等待线程停止中断线程(别用这种方式),这种中断方式依靠了java的异常处理机制终止线程(别用这种方式),缺点:容易损坏数据,线程没有保存的数据容易丢失设置守护线程测试线程是否处于活动状态。原创 2023-07-21 09:58:31 · 104 阅读 · 0 评论 -
Java-多线程并发-1.创建多线程
例如,播放电影时,就必须由一个线程播放视频,另一个线程播放音频,两个线程需要协调运行,否则画面和声音就不同步。因此,多线程编程的复杂度高,调试更困难。常用的Windows、Linux等操作系统都采用抢占式多任务,如何调度线程完全由操作系统决定,程序自己不能决定什么时候执行,以及执行多长时间。多进程稳定性比多线程高,因为在多进程的情况下,一个进程崩溃不会影响其他进程,而在多线程的情况下,任何一个线程崩溃会直接导致整个进程崩溃。进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程。原创 2023-07-21 09:44:52 · 144 阅读 · 0 评论