概述
java线程中的synchronized关键字和sleep()方法
直接po代码和截图
源码点这里
Service类
package com.demo.thread5;
public class Service {
public void a() {
System.out.println(Thread.currentThread().getName() + ",我是普通方法a()开始部分$$$$$$$$$");
b(); //调用同步方法b()
System.out.println(Thread.currentThread().getName() + ",b()函数调用完成了,我是方法a()结束部分......");
}
public synchronized void b() {
System.out.println(Thread.currentThread().getName() + ",我是同步方法b(),我要睡眠一会儿###########");
try {
Thread.sleep(3000); //睡眠3秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ",我是同步方法b(),我睡眠完了,我是同步方法b()结尾部分-----");
}
}
A类
package com.demo.thread5;
public class A implements Runnable{
Service service;
public A(Service service) {
this.service = service;
}
@Override
public void run() {
service.a();
}
}
B类
package com.demo.thread5;
public class B implements Runnable{
Service service;
public B(Service service) {
this.service = service;
}
@Override
public void run() {
service.a();
}
}
C类
package com.demo.thread5;
public class C implements Runnable{
Service service;
public C(Service service) {
this.service = service;
}
@Override
public void run() {
service.a();
}
}
Test类
package com.demo.thread5;
public class Test {
public static void main(String[] args) {
Service service = new Service();
//3个线程同时操作同一个对象service
A a = new A(service);
B b = new B(service);
C c = new C(service);
//给3个线程分别取个名字
Thread thread1 = new Thread(a, "线程1");
Thread thread2 = new Thread(b, "线程2");
Thread thread3 = new Thread(c, "线程3");
//启动线程
thread1.start();
thread2.start();
thread3.start();
}
}
运行结果如下:可以多运行几次
运行结果,情况1
运行结果,情况2
运行结果,情况3
最后
以上就是秀丽过客为你收集整理的java线程中的synchronized关键字和sleep()方法的全部内容,希望文章能够帮你解决java线程中的synchronized关键字和sleep()方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复