展开全部
研究了一下,我也不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 {
//定义的一个锁
}