不好意思题目有点抽象,
一般当一个 thread 执行一个函数 /方法,应该从头执行到完。一段代码可能会被多个线程访问。thread 上下文切换是操作系统或者是语言底层实现的。
现在我的问题是想请教一下,有没有什么语言的执行模型,会导致一个(同一个) thread 可不可能并发访问一段代码多次呢?一个 thread 在执行一个函数的中途,保存 context, 又去重新执行这个函数,这里的重新执行是指真的从头执行,非递归嵌套关系。请问这可能吗
为了避免 xy 问题,其实真正想问的是,这种情况下想用 threadlocal 来控制资源竞争是不是可能失效?
class C {
ThreadLocal<Long> example = new ThreadLocal<>();
}
C c;
void logic() {
example.set(System.currentTimeMills());
//此处 thread 保存上下文,切换,同一个 thread 从头跑 logic()第二次, 跑到相同位置,再返回第一次跑 logic()的上下文
example.get(); //这个 get()可能得到上一次跑的时候的值
example.remove();
}
请问这种情况有什么语言会有这种情况发生吗
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.