
java多线程
Cssembly
这个作者很懒,什么都没留下…
展开
-
实现Callable接口创建线程
实现Callable接口,如下。创建定长线程池,执行任务,如下。原创 2022-10-12 14:10:51 · 203 阅读 · 0 评论 -
synchronize和volatile关键字
6 synchronize关键字保证了内存可见性,在释放锁时,所有写入都会写回内存,而获得锁后,都会从内存中读取最新数据。5 可重入性:获取锁之后,如果在代码块中需要调用其他代码块,且其他代码块也需要获取相同的锁,则可以直接执行,无需等待。2 在一个类中,在对象方法前加synchronize关键字,执行该方法的代码需要获取当前对象的锁。3 在一个类中,在类方法前加synchronize关键字,执行该方法的代码需要获取类对象的锁。4 在代码块中加synchronize关键字,需要指明要获取哪个对象的锁。原创 2022-10-12 11:29:52 · 135 阅读 · 0 评论 -
多线程--竞态条件和内存可见性
开启两个线程,对同一个 CountRunnable对象中的i的值进行同时修改,如下。结果应为30,但是每次结果并不相同,多为20-30之间。实现一个Runnble接口,如下。原创 2022-10-12 11:00:54 · 122 阅读 · 0 评论 -
创建线程的开销
默认一个线程的线程栈大小是1M,别小看这1M的空间,如果每个用户请求都新建线程的话,1024个用户光线程就占用了1个G的内存,如果系统比较大的话,一下子系统资源就不够用了,最后程序就崩溃了。对操作系统来说,创建一个线程的代价是十分昂贵的, 需要给它分配内存、列入调度,同时在线程切换的时候还要执行内存换页,CPU 的缓存被清空,切换回来的时候还要重新从内存中读取信息,破坏了数据的局部性。【创建一个线程默认需要消耗1M的内存,如果每个用户请求都创建一个线程,那么1024个用户就是1G了,并发量一大就扛不住了】原创 2022-10-12 09:54:12 · 2018 阅读 · 0 评论 -
线程的创建及基本方法
在主函数中创建线程,执行线程的常用基本方法,见下图。实现Runnable接口,见下图。原创 2022-10-12 10:39:33 · 83 阅读 · 0 评论