文档章节

线程问题

小雪纷飞
 小雪纷飞
发布于 2016/12/10 19:52
字数 312
阅读 8
收藏 0

线程问题

线程锁为threadNo,每个线程threadNo唯一,达不到互斥最后资源recources不能同步

package len_server;

public class ThreadTest2 extends Thread {

  
	private  String threadNo;
	private  String lock;   

	private static int recources=100;//需要同步的资源对象   
 
	public ThreadTest2(String threadNo,String lock) {   
		this.threadNo = threadNo;  
		this.lock=lock;
	}   
	
	public static void main(String[] args) throws InterruptedException {
		for (int i = 1; i <=3; i++) {   
			ThreadTest2 t=new ThreadTest2(String.valueOf(i),"abc");
		    t.start();   
		 }
		sleep(2000);
		System.out.println("=================================");
		System.out.println(recources);//打印结果
	}
   
    public void run() {
    	
    	synchronized (this.getThreadNo()) {
    		int flag=recources;  //模拟查询余额
    		try {
				sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
    		recources=flag+1;//模拟存款
		}
    	
    }
    
    

	public String getThreadNo() {
		return threadNo;
	}
	public void setThreadNo(String threadNo) {
		this.threadNo = threadNo;
	}
	public String getLock() {
		return lock;
	}
	public void setLock(String lock) {
		this.lock = lock;
	}
}

线程锁为lock,每个线程的lock相同,也就是锁对象相同能实现资源同步

package len_server;

public class ThreadTest2 extends Thread {

  
	private  String threadNo;
	private  String lock;   

	private static int recources=100;//需要同步的资源对象   
 
	public ThreadTest2(String threadNo,String lock) {   
		this.threadNo = threadNo;  
		this.lock=lock;
	}   
	
	public static void main(String[] args) throws InterruptedException {
		for (int i = 1; i <=3; i++) {   
			ThreadTest2 t=new ThreadTest2(String.valueOf(i),"abc");
		    t.start();   
		 }
		sleep(2000);
		System.out.println("=================================");
		System.out.println(recources);//打印结果
	}
   
    public void run() {
    	
    	synchronized (this.getLock()) {
    		int flag=recources;  //模拟查询余额
    		try {
				sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
    		recources=flag+1;//模拟存款
		}
    	
    }
    
    

	public String getThreadNo() {
		return threadNo;
	}
	public void setThreadNo(String threadNo) {
		this.threadNo = threadNo;
	}
	public String getLock() {
		return lock;
	}
	public void setLock(String lock) {
		this.lock = lock;
	}
}

猜猜分别输出结果?

© 著作权归作者所有

共有 人打赏支持
小雪纷飞
粉丝 4
博文 15
码字总数 8311
作品 1
武汉
个人站长
私信 提问
MySQL redo lock 死锁问题排查 & 解决过程

版权声明:本文由张青林原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/181 来源:腾云阁 https://www.qcloud.com/community 周一上班,首先向同事了解...

偶素浅小浅
2016/11/10
12
0
13-从Java字节码的角度看线程安全性问题

本讲就来了解线程安全性问题,线程安全性问题是一个非常复杂,就是说,在没有充足的同步的情况下,多个线程中的操作的执行顺序是不可预测的,那么,可能就会,我们说在单线程中正常执行的问题...

G_66_hero
01/02
0
0
Java 线程安全 和 非线程安全

ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题。 面对这样的问题,回答是:ArrayList是非线程安全...

空云万里晴
2013/09/12
0
1
聊聊高并发(二)结合实例说说线程封闭和背后的设计思想

高并发问题抛去架构层面的问题,落实到代码层面就是多线程的问题。多线程的问题主要是线程安全的问题(其他还有活跃性问题,性能问题等)。 那什么是线程安全?下面这个定义来自《Java并发编...

真爱2015
2016/07/29
47
0
Java线程面试问题

在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。那么你就应该准备很多关于多线程的问题,一般面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多...

沧海为水
2016/11/28
127
0

没有更多内容

加载失败,请刷新页面

加载更多

如何限制用户仅通过HTTPS方式访问OSS?

一、当前存在的问题 当前OSS支持用户使用HTTPS/HTTP协议访问Bucket。但由于HTTP存在安全漏洞。大型企业客户都要求使用HTTPS方式访问OSS,并且拒绝HTTP访问请求。 目前OSS可以通过RAM policy方...

阿里云官方博客
21分钟前
1
0
详解深度学习之经典网络架构——LeNet

一、基本简介 LeNet-5出自论文Gradient-Based Learning Applied to Document Recognition,是一种用于手写体字符识别的非常高效的卷积神经网络。 二、LeNet网络的基本结构 LeNet5 这个网络虽...

AI女神
24分钟前
3
0
日志服务Python消费组实战(二):实时分发数据

场景目标 使用日志服务的Web-tracking、logtail(文件极简)、syslog等收集上来的日志经常存在各种各样的格式,我们需要针对特定的日志(例如topic)进行一定的分发到特定的logstore中处理和...

阿里云云栖社区
25分钟前
2
0
LVM 增加磁盘扩容

sudo parted /dev/sdeparted> mklabel gptparted> mkpart primary lvm ext4 %0 %100parted> printsudo lvmlvm> pvcreate /dev/sde1lvm> vgextend vg-data /dev/sde1lvm> lve......

仪山湖
28分钟前
1
0
Linux挂载本地iso镜像,不联网使用yum命令

上传iso镜像文件到/mnt 目录下 在/mnt目录下创建Server目录 mkdir Server 备份 /etc/yum.repos.d/目录下的repo文件 cd /etc/yum.repos.dmkdir repobakmv *.repo repobak/ 挂载本地iso文件...

AustinYe
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部