![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
大叶子不小
这个作者很懒,什么都没留下…
展开
-
Java多个线程顺序打印数字
要求 启动N个线程, 这N个线程要不间断按顺序打印数字1-N. 将问题简化为3个线程无限循环打印1到3 方法一: 使用synchronized 三个线程无序竞争同步锁, 如果遇上的是自己的数字, 就打印. 这种方式会浪费大量的循环 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2原创 2020-12-23 14:09:34 · 846 阅读 · 0 评论 -
CMS的问题
首先分为四个阶段: 初始标记(STW) 并发标记 重新标记(STW) 并发清除 1.为了增加初始标记的速度:XX:+CMSParallelInitialMarkEnabled,同时调大并行标记的线程数,线程数不要超过cpu的核数。 2.并发标记这个阶段是和用户线程并发的,可能会导致concurrent mode failure。 3.重新标记的内存范围是整个堆,包含_young_gen和_old_gen。为什么要扫描新生代呢,因为对于老年代中的对象,如果被新生代中的对象引用,那么就会被视为存活对象,即使新生原创 2020-09-23 21:44:25 · 484 阅读 · 0 评论 -
如何在两个线程之间共享数据
阅读目录 1,如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,卖票系统就可以这么做。 2,如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,例如,设计4个线程。其中两个线程每次对j增加1,另外两个线程对j每次减1,银行存取款 每个线程执行的代码相同,可以使用同一个Runnable对象 public class RunnalbleTest2 implements Runnable { privat...原创 2020-09-23 21:43:45 · 599 阅读 · 0 评论 -
面试问题(线程间通信以及全局静态字段的线程安全问题)
synchronized解决线程间通信:我对这个问题的理解是说这个线程结束会通知下一个等待的线程(这个涉及到synchronized锁升级机制,看是自旋等待还是被唤醒)。如果是解决唤醒的问题:那么可以用Reentrantlock,Semaphore,CyclicBarrier等 synchronized解决线程间数据共享:我第一反应是它怎么能实现数据共享,看了好多文章,应该这个问题问的是如何解决多线程间数据共享的同步问题。但是threadlocal只能解决的是线程内的数据隔离问题,也解决不了线程间的数据共享原创 2020-09-23 11:04:28 · 119 阅读 · 0 评论