一个关于lock的多线程。

ping55 ping55 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
题目是这样的,想必很多人都看过这个东西吧:
根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。

public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}

答案:
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

---------------------------------------------------------------------------------------------------------------
我的问题这样:我以前基本没接触过多线程的,如果觉得我的问题很白痴 请见谅!。。。。。。
我没想明白答案所说的int是按值传递传递的只是一个副本,换成object就会死锁 是一个什么样的情况,
是在多线程情况下吗,是两个线程同时调用这个方法吗。是两个或多个线程的话,lock锁住了对象 那其他线程就不回去执行了,,,,那单线程下的话 就更不应该出现死锁了,,,那答案中所说的int换成object会死锁 到底是一个什么样的情况呢。。。。。?
...全文

相关推荐

Java多线程中Lock锁的使用总结

主要介绍了Java多线程中Lock锁的使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38657984

105_多线程_互斥锁_第1篇【pthread_mutex_lock()创建两个线程,同一时间只能有一个运行,一个一个的打印其中的字符串】【lock 、unlock理解】

东方图: #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include <pthread.h> #include <string.h> pthread_mutex_t mutex;//= PTHREAD_MUTEX_INITIALIZER; void my_print(char *str) { //printf("%s\n", str); while (*s

扳手的海角

Java Lock锁多线程中实现流水线任务

主要介绍了Java Lock锁多线程中实现流水线任务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

weixin_38607908

c#多线程中Lock()关键字的用法小结

本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。 每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。 其中,lock是一种比较好用的简单的线程同步方式,它是通过为给定对象获取互斥锁来实现同步的。它可以保证当一个线程在关键代码段的时候,另一个线程不会进来,它只能等待,等到那个线程对象被释放,也就是说线程出了临界区。用法:

weixin_38723373

Java多线程基础——Lock类

Lock类是Java类来提供的功能,丰富的api使得Lock类的同步功能比synchronized的同步更强大。本文对此进行详细介绍,下面跟着小编一起来看下吧

weixin_38722193
评论 2
收藏 已收藏
分享
返回顶部
ping55
C# 111,129 成员 642,538 内容