精华内容
下载资源
问答
  • 线程调用静态方法

    千次阅读 2015-10-19 16:20:55
    一、文章来由项目需求,可能要在多线程中使用静态方法。... 我们在知道, 静态字段(static field)和静态方法(static method)的调用是通过调用。静态方法不对特定的实例操作,只能访问静态成员。实例方法可对特

    一、文章来由

    项目需求,可能要在多线程中使用静态方法。

    二、静态方法与线程安全

    类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于类,实例成员则属于对象,即类的实例。

    我们在知道, 静态字段(static field)和静态方法(static method)的调用是通过类来调用。静态方法不对特定的实例操作,只能访问静态成员。实例方法可对特定的实例操作,既能访问静态成员,也能访问实例成员。

    那么,在多线程中使用静态方法是否有线程安全问题?这要看静态方法是是引起线程安全问题要看在静态方法中是否使用了静态成员。

    因为,在多线程中使用同一个静态方法时,每个线程使用各自的实例字段(instance field)的副本,而共享一个静态字段(static field)。所以说,如果该静态方法不去操作一个静态成员,只在方法内部使用实例字段(instance field),不会引起安全性问题。但是,如果该静态方法操作了一个静态字段,则需要静态方法中采用互斥访问的方式进行安全处理。

    举个简单的例子,我们使用的Console.WriteLine();中WriteLine()是Console.WriteLine类的静态方法。

    对于ASP.NET, 多个客户端访问服务器端, 这是一个多线程的例子.只要理解了原因,我们可以在三层架构中的数据访问层中放心使用静态方法(static method)来访问数据库。

    展开全文
  • 输出的线程名显示是多线程调用,但是打断点之后所有的请求都阻塞了,是单线程还是多线程呢?在这个地方需要考虑并发问题吗?
  • java 多线程调用单例的同一个方法

    千次阅读 2018-03-14 13:17:20
    1,java多线程调用 单例中一个的方法是不会排队的,因为jvm 在每个线程下,都有一份 对调用方法的引用。 2,多个线程调用的同一个对象的同一个方法: 如果方法里无成员变量,不受任何影响; 如果方法里有...

    开发过程中,遇到此类场景,基础不牢地动山摇,果断网上找文章学习,摘录文章,记录一下:

    1,java多线程调用 单例类中一个的方法是不会排队的,因为jvm 在每个线程下,都有一份 对调用方法的引用。
    2,多个线程调用的同一个对象的同一个方法:
    如果方法里无成员变量,不受任何影响;
    如果方法里有成员变量,只有读操作,不受影响,存在赋值操作,有影响
    3,多线程调用同一个方法,局部变量会共享吗?
    局部变量不会受多线程影响;
    成员变量会受到多线程影响


    jvm每个线程都拥有一个方法调用栈,用于跟踪线程中运行的一系列方法调用过程, 栈中的每个元素成为栈帧,线程调用每个方法时会将方法栈压入一个新帧, 帧里面存放方法参数,局部变量,运算过程产生的临时数据

    Java中的栈

    每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。某个线程正在执行的方法称为当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。当线程执行一个方法时,它会跟踪当前常量池。

    每当线程调用一个Java方法时,JVM就会在该线程对应的栈中压入一个帧,这个帧自然就成了当前帧。当执行这个方法时,它使用这个帧来存储参数、局部变量、中间运算结果等等。

    Java栈上的所有数据都是私有的。任何线程都不能访问另一个线程的栈数据。所以我们不用考虑多线程情况下栈数据访问同步的情况。

    像方法区和堆一样,Java栈和帧在内存中也不必是连续的,帧可以分布在连续的栈里,也可以分布在堆里

    Java栈的组成元素——栈帧

    栈帧由三部分组成:局部变量区、操作数栈、帧数据区。局部变量区和操作数栈的大小要视对应的方法而定,他们是按字长计算的。但调用一个方法时,它从类型信息中得到此方法局部变量区和操作数栈大小,并据此分配栈内存,然后压入Java栈。

    展开全文
  • 线程对象调用run方法不开启线程。仅是对象调用方法线程对象调用start开启线程,并让jvm调用run方法在开启的线程中执行。

    线程对象调用run方法不开启线程。仅是对象调用方法。线程对象调用start开启线程,并让jvm调用run方法在开启的线程中执行。

    展开全文
  • 多个线程调用静态方法,是否会出现并发问题?

    万次阅读 多人点赞 2017-04-01 17:54:43
    多个线程调用静态方法,是否会出现并发问题取决于,静态方法内部是否需要引用共享区内的静态变量。当线程调用静态方法时,都会创建一套临时变量,可见性是在这个线程内部,所以当多个线程调用静态方法时,并且这个...

    多个线程调用静态方法,是否会出现并发问题取决于,静态方法内部是否需要引用共享区内的静态变量。当线程调用静态方法时,都会创建一套临时变量,可见性是在这个线程内部,所以当多个线程调用静态方法时,并且这个静态方法没有引用外部静态变量的。不会有线程并发的问题。

    展开全文
  • 创建线程调用类成员函数的方法

    千次阅读 2007-08-30 17:17:00
    成员函数创建一个线程调用类成员另外一个函数时,有两种解决办法。第一种比较麻烦,举例说明,比如有一个void* gStartVod(void* pVoid);class Record{ friend void* gStartVod(void* pVoid); void create_...
  • 目前写了一个多线程项目,由多个子项目组成,目前想在同步子线程中访问一个中的初始化com口方法,但是线程可能同时进入初始化方法导致crash,想设置一个锁但是取到的 句柄地址都不一样无法上锁,请问这种情况要...
  • 多个线程应该是调用的同一个对象的同一个方法: 如果方法里无成员变量,那么不受任何影响 如果方法里有成员变量,只有读操作,不受影响  存在写操作,考虑多线程影响值 当多个线程同时访问同一个方法的时候,...
  • package Test;import java.util.Date;public class MyTread { /** * @author peter * @desc 启动多线程 推送消息到接口地址,匿名内部类调用外部方法属性 * @date 2017.09.13 */ public void test() { //
  • public class MyTest { public static void main(String[] args) ... System.out.println("main方法调用method,得到了结果"+result+":"+new Date().toLocaleString()); } public static String method(){ .
  • 最近在研究多线程,突然想到一个问题,“多线程调用单例模式的的同一个方法,是不是需要排队调用?”,比如有10个线程同时调用一个单例模式的同一个方法,他们是第一个调完再轮到第二个调,还是10个线程同时可以...
  • 线程调用类的成员函数的实现

    千次阅读 2012-02-21 20:44:35
    方法实现了多线程灵活的调用类的成员函数。代码如下: #include #include #include //g++ -lpthread -o cpro cpro.cpp class triangle { private: int length; int width; int height; public: ...
  • C# 多线程调用静态方法或者静态实例中的同一个方法-方法内部的变量是线程安全的       using System;using System.Threading;using System.Threading.Tasks;using System.Diagnostics;using System....
  • Java是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能对全局变量(共享资源)进行写操作。 如果有,则需要使用同步机制:synchronized关键字。
  • 线程调用同一静态方法会有多线程问题吗项目中有的public static方法有可能被多线程同时调用,所以有这个疑问,大致网上查了下自己没有试验过。 只要在静态函数中没有处理多线程共享数据,就不存在着多线程访问同...
  • java多线程调用 单例中一个的方法

    千次阅读 2016-04-03 22:12:32
    这几天面试了几个人,发现他们对线程 访问 方法的概念还是很模糊的。其实我自己也多线程用的也不多,基本都是生产者消费者模型。 但是基本概念大家还是要知道的。
  • 线程调用start方法是立即执行了吗 ? 面试者回答: 线程不是马上执行的;准确来说,调用start( )方法后,线程的状态从 new 的状态 变成 “READY(就绪)”状态,而不是“RUNNING(运行中)”状态(关于线程的状态详细...
  • 要求入口函数必须是的静态函数。 通常,可以采用thunk,或者模板来实现。 因C++ 11中引入了 std::async ,可以很好的解决这个问题了。 值得注意的是,在循环中 std::async 创建线程,我试了好多次总是失败,...
  • 使用两个线程调用同一静态方法(该静态方法不引用静态变量)、第一个线程被阻塞的时间大于第二个线程被阻塞的时间,若第一个线程与第二个线程的输出结果相同,则两个线程调用同一静态方法存在线程安全问题,若第一个...
  • C# 跨线程调用TextBox方法浅析

    千次阅读 2010-05-14 12:11:00
     当子线程调用其所在的方法时返回“True”。  2.当单击"主线程调用textBox1"时,  "this.textBox1.InvokeRequired"的返回值为"False",  直接执行"else"的代码,"textBox1"中显示“Main Thread”; ...
  • 示例代码: 1、定义单例 ...在第一次调用的时候实例化 public class Singleton { //私有的默认构造子 private Singleton() { //初始化标识位 setFlag(true); } //注意,这里没有final privat
  • 有时候需要线程执行"带参数方法" 此示例演示怎样借助封装实现“线程调用带参方法”(二).代码 using System;using System.Threading;namespace 借助封装实现_线程调用带参方法_{ class Help { public int x...
  • 线程(一):创建线程线程的常用方法

    万次阅读 多人点赞 2018-09-01 19:14:23
    一:为什么要学多线程 应付面试 :多线程几乎是面试中必问的题,所以掌握一定的基础知识是必须的。 了解并发编程:实际工作中很少写多线程的代码,这部分代码一般都被人封装起来了,在业务中使用多线程的机会也...
  • JNI native多线程调用Java静态方法

    千次阅读 2016-09-13 12:25:18
    前言: 最近在做音视频实时通信,因为回声问题要解决,而播放和音视频采集是异步处理,所以需要java在中间做音频流桥接;播放端的音视频播放和拉流是在子线程处理的,因此有...同时我也将java设置为全局变量,供给其
  • 线程 分批调用方法接口

    千次阅读 2018-07-31 16:45:14
    工具  public abstract class BatchHandlerList<T> implements BatchHandlerInterface<T> { private static final Logger LOGGER = Logger.getLogger(BatchHandlerList.class);...
  • C#线程调用带参数的方法

    千次阅读 2008-07-12 09:41:00
    转:C#线程调用带参数的方法--2 2007年06月15日 星期五 下午 11:24 个人认为,还是为线程创建一个单独的,在的初始化函数里头为里头的变量赋值,来达到传入参数比较简单。下面有些方法是有问题的,不过我已经...
  • 线程方法调用

    千次阅读 2011-11-15 20:52:50
    /** * 这段代码是关于多线程中同步方法调用的一些总结: * * 1.如果调用的是普通方法,就和普通程序一样执行,有时候...如果调用的是静态同步方法,则静态方法所属的Class对象会被加锁,因此不能访问该的静态sy
  •  run()方法:在本线程调用该Runnable对象的run()方法,可以重复多次调用;  start()方法:启动一个线程调用该Runnable对象的run()方法,不能多次启动一个线程; public class Test implements Runnable{ ...
  • 今天遇到一个笔试题,说的是:当一个线程进入一个对象的synchronized方法之后,其它线程能否进入该对象的其他方法? 答:很明显当其它方法是非synchronized方法时,调用是不受影响的,但当其它方法也是synchronized...
  • C#线程调用有参和无参函数的方法

    千次阅读 2014-01-03 15:25:34
    引用命名空间:using System.Threading;  一、调用无参函数  Thread th = new Thread(new ThreadStart(Function));  ... //被线程调用方法 }  二、调用有一个参数的函数 

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,572,927
精华内容 629,170
关键字:

线程调用类的方法