您当前的位置: 首页 >  I.T10001 安全

synchronized解决多线程安全问题(1)

I.T10001 发布时间:2020-01-09 09:02:39 ,浏览量:3

package com.xxl.sso.sample.test;

 

public class ThreadTest implements Runnable {

 

private static String name;

private static int count = 100;

private static Object obj=new Object();

 

public ThreadTest(String name) {

this.name = name;

}

 

@Override

public void run() {

System.out.println(Thread.currentThread().getName() + "线程开始执行");

while (count > 0) {

try {

Thread.sleep(50);

} catch (InterruptedException e) {

e.printStackTrace();

}

if (count > 0) {

dec();

}

}

}

 

//synchronized关键字

/*public synchronized void dec() {

if (count > 0) {

System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");

count--;

}

}*/

//this同步代码

/*public void dec() {

synchronized (this.getClass()) {

if (count > 0) {

System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");

count--;

}

}

}*/

//类字节码同步代码

/*public void dec() {

synchronized (ThreadTest.class) {

if (count > 0) {

System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");

count--;

}

}

}*/

//对象锁同步代码

public void dec() {

synchronized (obj) {

if (count > 0) {

System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");

count--;

}

}

}

 

public static void main(String[] args) {

ThreadTest r1 = new ThreadTest("");

Thread t1 = new Thread(r1, "窗口1");

t1.start();

ThreadTest r2 = new ThreadTest("");

Thread t2 = new Thread(r2, "窗口2");

t2.start();

}

}

 

 

关注
打赏
1688896170
查看更多评论

I.T10001

暂无认证

  • 3浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0498s