java为什么开子线程_Java:为什么不是先执行完主线程再执行子线程了,子线程的对象已经被我锁定了啊...

展开全部

研究了一下,我也不32313133353236313431303231363533e4b893e5b19e31333335333035是很懂,给你说一下我的想法。首先这个同步是两个线程同时访问同一个变量时才需要使用的,也就是涉及到线程安全问题时使用synchronized关键字。你的这个可以说是只是为了测试,代码本身貌似没有同步的意义。

好像错误是出在了那个锁上,你的那个锁没有意义。子线程根本不需要那个锁就可以执行,所以子线程不会被阻塞。我是这么实现的,你看一下。class Test {

public static void main(String[] args)

{

TestThread demo=new TestThread();

demo.start();

int total=0;

synchronized(Lock.class)

{

for (int i=1;i<=30;i++ )

{

total += i;

System.out.println("主线程:"+total);

}

}

System.out.println("执行完毕...");

}

}

class TestThread extends Thread

{

int total;

public void run()

{

synchronized(Lock.class)

{

for (int i=1;i<=30;i++ )

{

total += i;

System.out.println("子线程:"+total);

}

}

}

}

class Lock {

//定义的一个锁

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值