synchronized问题

罗卜基斯 2021-01-22 03:36:55
想测试synchronized对象锁在“可重入锁”的概念,运行出错,求解答




public class SynchronizedTest {
public static void main(String[] args) {

MyThreadSub mt = new MyThreadSub();
Thread t1 = new Thread(mt);
t1.start();
new Thread(new MyThreadMain()).start();
}
}

class MyThreadSub extends Thread{
@Override
public void run() {
Sub sub = new Sub();
sub.operateISubMethod();
}
}

class MyThreadMain extends Thread{
@Override
public void run() {
Main main = new Main();
main.operateIMainMethod();
}
}
class Main
{
private int i = 10;
public synchronized void operateIMainMethod()
{
for (int i1 = 0; i1 < 5; i1++) {
System.out.println("main print i=" + i1);
}
}
}

class Sub extends Main
{
private int j = 10;
public synchronized void operateISubMethod()
{
for (int i = 0; i < 3; i++) {
System.out.println("Sub print j=" + i);
System.out.println("=============================");
this.operateISubMethod();
}
}
}
...全文
197 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Last_zzz 2021-01-22
  • 打赏
  • 举报
回复
sub.operateISubMethod();死循环了
qybao 2021-01-22
  • 打赏
  • 举报
回复
把 this.operateISubMethod(); 改成 this.operateIMainMethod(); 否则,operateISubMethod无限递归自己造成栈溢出

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧