两个线程交替打印0-100

大佬们,我有个问题,可以帮忙解决下吗。🥹🥹
问题:两个线程交替打印0-100,当我使用了for循环,为什么会重复打印?
结果是
线程一打印0
线程二打印0
线程一打印1
线程二打印1

线程一打印100
线程二打印100

当我把变量i改为static修饰为共享数据时,问题就解决了。但是我不是只new了一次pk对象,也就是说我不加static不也是两个线程共享变量i吗?那不应该不会重复打印吗?
代码如下 谢谢大佬们
class p2 {    public static void main(String[] args) {        pk p=new pk();        Thread t1=new Thread(p);        Thread t2=new Thread(p);        t1.setName(&quot;线程一&quot;);        t2.setName(&quot;线程二&quot;);        t1.start();        t2.start();    }}class pk implements Runnable{    public void run() {        synchronized (this) {            for(int i=0;i<=100;i++) {                System.out.println(Thread.currentThread().getName()+&quot;在打印数字&quot;+i);                notify();                try {                    wait();                } catch (Exception e) {                    throw new RuntimeException();                }            }        }    }} #Java#  #多线程#
全部评论
你把i放到pk类 里面,for写成for(;i<100;i++)
2 回复 分享
发布于 2023-05-28 22:27 浙江
你这里for循环里面int i = 0 变成线程局部变量,所以会循环打印但是没有共享到i
2 回复 分享
发布于 2023-05-28 22:26 浙江
感觉可能因为i是局部变量,每个线程私有所以会重复打印。然后加了static后所有线程共享所以不重复了。
1 回复 分享
发布于 2023-05-27 11:36 福建
这种交替的直接用semphere,很方便
点赞 回复 分享
发布于 2023-06-22 18:21 江苏
方法内局部变量线程私有
点赞 回复 分享
发布于 2023-05-27 16:23 上海
好有道理
点赞 回复 分享
发布于 2023-05-27 08:16 山东
肯定涉及到了线程之间的同步问题啊
点赞 回复 分享
发布于 2023-05-27 06:56 广东

相关推荐

头像
09-12 22:48
中南大学 Java
微步在线一面,上来本来还行自我介绍的,结果都不要自我介绍,直接开始八股轰炸:1、介绍一下Java的Object对象有哪些方法?2、Object的equals方法和hashCode方法要一起重写,原因是什么呢?3、介绍一下HashMap4、你一般使用的JDK版本是多少?谈谈Java&nbsp;8、11、17的新特性5、Java的异常分为哪几种?6、受检异常和非受检异常在使用上有何不同?7、介绍一下Java对象的创建过程8、创建对象过程的内存分配,是分配到哪儿?什么情况下会发生堆内存的溢出?9、对于内存溢出这种错误,Java不是有自己的垃圾回收器吗,它为什么不会把它回收掉?10、引用类型除了强引用还是有什么类型的引用?11、线上Java的服务,它报警CPU使用率100%,怎么去进行排查?12、使用过synchronized关键字吗?它修饰普通方法和静态方法上有什么区别?13、使用synchronized关键字锁一个代码块,括号里面能锁String对象或Integer对象吗?14、知道CopyOnWriteArrayList吗?它是怎么保证线程安全的?15、List有ArrayList和LinkedList,你认为有没有CopyOnWriteLinkedList呢?为什么没有?16、使用过线程池吗?谈谈线程池有哪些核心参数?17、假设最大线程数为10,核心线程8,正在运行,又来了一个任务,正常情况是先入队,能否不让其入队,先让其十个线程跑满再入队?我问为什么都不用自我介绍,他说面试的人太多了,根本筛选不过来,岗位一开没几天就有上百份简历了,只能通过这种方式快速筛选
查看17道真题和解析
点赞 评论 收藏
分享
评论
7
18
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务