精华内容
下载资源
问答
  • 输出的线程名显示是多线程调用,但是打断点之后所有的请求都阻塞了,是单线程还是多线程呢?在这个地方需要考虑并发问题吗?
  • Java多线程调用多个服务

    千次阅读 2017-08-16 16:49:08
    Java多线程调用多个服务   有时候我们在同一个程序里面想实现一系列的功能,为了让这些功能无缝连接起来,我们采用多线程来调用这些服务。代码思路如下,主要通过构造方法来实现: /** * 多线程调用多个...
    Java多线程调用多个服务

             有时候我们在同一个程序里面想实现一系列的功能,为了让这些功能无缝连接起来,我们采用多线程来调用这些服务。代码思路如下,主要通过构造方法来实现:
    /**  
     * 多线程调用多个服务从而完成一个完整的功能
     *
     */
    package com.zy.socket;
    
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.starit.ipran.kafka.KafkaUtils;
    
    
    public class ServerStart extends Thread {
    
           private String serverType;
    
        public ServerStart(String serverType) {
            this.serverType = serverType;
        }
    
        public static void main(String[] args) throws Exception {
            ServerStart server = new ServerStart("server");
            ServerStart client = new ServerStart("client");
                    
            client.start();
            Thread.sleep(5000);
            server.start();
        }
    
        public void run() {
            if (serverType.equals("client")) {
                try {
                    /**
                     * 调用服务一
                     */
                    System.out.println("调用服务一成功");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else if (serverType.equals("server")) {
                try {
                   /**
                    * 调用服务二
                    */
                    System.out.println("调用服务二成功");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
    

    运行结果如下:



    展开全文
  • MFC跨线程调用另一个线程函数执行的函数,怎么得到函数的返回值呢?函数名转换函数值
  • WPF跨线程调用和Dispatcher

    千次阅读 2017-07-29 17:48:17
    在winform中默认不允许跨线程操作控件,...在WPF中同样也是禁止跨线程操作控件的,会提示“调用线程无法访问此对象,因为另一个线程拥有该对象。”的错误。 正确的操作是使用Dispatcher。 void Test() { int i = 0;

    在winform中默认不允许跨线程操作控件,但可通过设置控件属性CheckForIllegalCrossThreadCalls = false。在WPF中同样也是禁止跨线程操作控件的,会提示“调用线程无法访问此对象,因为另一个线程拥有该对象。”的错误。

    这里写图片描述
    正确的操作是使用Dispatcher。

            void Test()
            {
                int i = 0;
                while (i < 100)
                {
                    //Diapatcher + Action + lambda 匿名函数
                    this.lblValue.Dispatcher.Invoke(new Action(() => this.lblValue.Content = i.ToString()));
    
                    Thread.Sleep(10);
                    i++;
                }
            }
    
            //点击按钮开始计时
            //刷新lblValue控件的值
            private async void btnRun_Click(object sender, RoutedEventArgs e)
            {
                //async/await + Task + Action +lambda 匿名函数
                await Task.Run(new Action(() => Test()));
            }

    继续深入Dispatcher就需要了解WPF线程模型,暂时还没搞懂,可以参考一站式WPF–线程模型和Dispatcher

    展开全文
  • springboot中异步线程调用问题

    万次阅读 2018-01-31 17:47:06
    1.原始线程总结 我们在使用多线程的时候,往往需要创建Thread类,或者实现Runnable接口,如果要使用到线程池,我们还需要来创建Executors。 2.spring线程 只要要@EnableAsync就可以使用多线程。使用@Async就可以...

    1.原始线程总结

    我们在使用多线程的时候,往往需要创建Thread类,或者实现Runnable接口,如果要使用到线程池,我们还需要来创建Executors。

    2.spring线程

    只要要@EnableAsync就可以使用多线程。使用@Async就可以定义一个线程任务。通过spring给我们提供的ThreadPoolTaskExecutor就可以使用线程池。

    3.使用

    3.1 新建springboot项目

    3.2 项目导入idea

    目录结构如下:

    3.3 新建线程配置类

    package com.hotpot.comm.config;
    
    import java.util.concurrent.Executor;
      
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.ComponentScan;  
    import org.springframework.context.annotation.Configuration;  
    import org.springframework.scheduling.annotation.EnableAsync;  
    import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;  
    
    
    /**
     * 描述:
     * @author: myx
     * @date: 2018/1/31 0031
     * Copyright © 2017-ganinfo. All rights reserved.
     */
    @Configuration  
    @ComponentScan("com.hotpot.*.service.impl")
    @EnableAsync
    public class ThreadConfig  {  
         /**
          * 执行需要依赖线程池,这里就来配置一个线程池
          * @return
          */
         @Bean  
         public Executor getExecutor() {  
              ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();  
              executor.setCorePoolSize(10);
              executor.setMaxPoolSize(100);
              executor.setQueueCapacity(250);
              executor.initialize();  
              return executor;  
         }  
    }  

    3.4 新建service类

    package com.hotpot.test.service.impl;
    
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.stereotype.Service;
    
    import java.util.Random;
    import java.util.UUID;
    
    /**
     * 描述:
     * @author: myx
     * @date: 2018/1/31 0031 17:09
     * @version: V1.0
     * Copyright © 2018-ganinfo. All rights reserved.
     */
    @Service
    public class TestServiceImpl {
        /**
         * 这里进行标注为异步任务,在执行此方法的时候,会单独开启线程来执行
         */
        @Async
        public void function1() {
            System.out.println("f1 : " + Thread.currentThread().getName() + "   " + UUID.randomUUID().toString());
            try {
                Thread.sleep(new Random().nextInt(100));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        @Async
        public void function2() {
            System.out.println("f2 : " + Thread.currentThread().getName() + "   " + UUID.randomUUID().toString());
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    

    3.5 编写controler

    package com.hotpot.test.controller;
    
    import com.hotpot.test.service.impl.TestServiceImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 描述:
     *
     * @author: ruikanwang
     * @date: 2018/1/31 0031 17:24
     * @version: V1.0
     * 注意:本内容仅限于新疆感知科技有限公司内部传阅,禁止外泄以及用于其他的商业目
     * Copyright © 2018-ganinfo. All rights reserved.
     */
    @RestController
    public class TestController {
        @Autowired
        TestServiceImpl service;
    
        @GetMapping("/test")
        public void test(){
            for (int i = 0; i < 10; i++) {
                service.function1(); // 执行异步任务
                service.function2();
            }
        }
    }
    

    3.6 启动项目

    启动成功访问http://localhost:8080/test 运行结果:

     

    可以看到异步调用实现成功

     

    4.其他实现方式

    package com.hotpot.comm.config;
    
    import java.util.concurrent.Executor;  
      
    import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;  
    import org.springframework.context.annotation.ComponentScan;  
    import org.springframework.context.annotation.Configuration;  
    import org.springframework.scheduling.annotation.AsyncConfigurer;  
    import org.springframework.scheduling.annotation.EnableAsync;  
    import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;  
      
    @Configuration
    @ComponentScan("com.hotpot.*.service.impl")
    @EnableAsync  
    public class ThreadConfig implements AsyncConfigurer {  
      
         @Override  
         public Executor getAsyncExecutor() {  
              ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();  
              executor.setCorePoolSize(5);  
              executor.setMaxPoolSize(10);  
              executor.setQueueCapacity(25);  
              executor.initialize();  
              return executor;  
         }  
      
         @Override  
         public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {  
              return null;  
         }  
      
    }  

    参考链接: http://blog.csdn.net/king_kgh/article/details/76022136

    后续添加springboot 异步线程池starter(实现自定义多个线程池共存)请关注博客

    更多知识参见[持续更新]

    springboot教程目录

     

     


     


     

    展开全文
  • 大家好,我在QT多线程编程时,在线程内部调用了一个外部函数,外部函数中使用了emit来发送信号,请问这样是否会存在问题?另外,在线程调用外部函数时需要注意哪些问题?
  • linux多线程调用同一个函数解析

    千次阅读 2017-11-03 13:53:58
    问题背景:在工作中遇到过一个问题,就是在两个线程同时调用同一个函数的时候,到底是应该在这个函数的内部什么处理上加上互斥。...2.同一个进程中的两个线程调用同一个处理函数 3.两个不同进程中

    原文地址:http://blog.csdn.net/mq_ydn3102/article/details/8546722

    问题背景:在工作中遇到过一个问题,就是在两个线程同时调用同一个函数的时候,到底是应该在这个函数的内部什么处理上加上互斥。原因又是什么?

    为了调查这个问题,我决定从以下三方面调查

    1.线程中函数的调用

    2.同一个进程中的两个线程调用同一个处理函数

    3.两个不同进程中的两个线程调用同一个处理函数


    1.线程中函数的调用

    每个进程都会有自己的虚拟地址空间,同一个进程中的每个线程都会在这个虚拟空间中,并被分配相应的资源。
    线程中的函数实体是在内存中,而函数中的局部变量则会一次被push到栈中。
    如果是A函数调用B函数,则会先将A函数的参数和局部变量push到队列中,再将B函数的参数和局部变量push到队列中
    具体如下(参数是以从右到左压入栈中, __stdcall与__cdecl调用约定都是这么处理的):

    void fun(param1, param2,. param3....paramN)
    {
    value1;
    value2;
    ...
    valueN;
    }

    如果执行上面的函数在栈中会这样变化

    1:将fun函数的入力参数从右到左依次压入到栈中。

    2:将fun函数的指针压入栈中

    3:将ebp,ebx等寄存器入栈保存
    4:在栈中依次为各个变量分配空间

    执行后的处理:

    1.释放变量空间

    2.弹出个寄存器

    3.ret,弹出eip,返回主调方代码

    4.释放参数空间

    2.两个线程调用同一个函数

    两个线程中的函数的局部变量由于是保存在不同的线程中,因此不需要进行互斥处理

    3.两个不同进程中的两个线程调用同一个处理函数

    同样,两个线程中的函数的局部变量由于是保存在不同的线程中,因此不需要进行互斥处理

    结论:
    因此需要互斥处理的,一般是函数中有全局变量,有动态申请的空间,有静态局部变量,有需要进程数据循环发送之类的操作需要进行互斥处理

    展开全文
  • 首先是多线程模块的多种制作方法和调用方法,其次每种多线程模块都实现免注册到系统调用,和免杀软的查杀,更重要的是示范了多种多线程模块的调用方法。 以下是所有视频的链接: 全部教程播单:...
  • 线程调用函数理解

    千次阅读 2012-12-13 11:16:29
    1.多线程调用同一个函数的理解 多线程调用一个函数和一个线程调用一个函数是一样的,关键要看你的函数是否使用了一些全局的东西。 函数的调用有自己的栈,每个函数的栈都是独立的. 唯一要考虑的是,在调用这个...
  • 线程调用start方法是立即执行了吗 ? 面试者回答: 线程不是马上执行的;准确来说,调用start( )方法后,线程的状态从 new 的状态 变成 “READY(就绪)”状态,而不是“RUNNING(运行中)”状态(关于线程的状态详细...
  • 线程调用DataGridView控件

    千次阅读 2013-07-11 22:40:38
    访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问...
  • 获取任意线程调用栈的那些事

    万次阅读 2016-08-29 09:51:20
    BSBacktraceLogger 是一个轻量级的框架,可以获取任意线程调用栈,开源在我的 GitHub,建议下载下来结合本文阅读。 我们知道 NSThread 有一个类方法 callstackSymbols 可以获取调用栈,但是它输出的是当前线程的...
  • VB.net应用技巧4: 跨线程调用控件

    千次阅读 2017-02-02 14:55:14
    在VB.net应用技巧3中,说明在线程中访问控件是不安全的,本文介绍在线程中安全访问控件的... 3、在线程调用该函数。    通过以上方法,就可以跨线程安全访问控件了。 原创性文章,转载请注明出处 http:
  • 线程调用同一静态方法会有多线程问题吗项目中有类的public static方法有可能被多线程同时调用,所以有这个疑问,大致网上查了下自己没有试验过。 只要在静态函数中没有处理多线程共享数据,就不存在着多线程访问同...
  • java多线程调用run和不调用run的区别

    千次阅读 2016-05-25 17:42:58
    当在java程序中创建一个线程的时候,会三种情况: 1,只运行run方法 2,先执行start,再执行run方法 3,只运行start方法 三者的区别如下: 运行方式 区别 只运行run 只运行run的时候...
  • 线程调用MFC DLL、在MFC DLL创建多线程与线程安全. |' u f8 D8 G @# _( O & _! Y: J5 o' U9 d5 P. [+ \多线程调用: ! z: {1 ^9 c+ N g: ? S 1、动态库只有一个导出函数: $ w6 Y7 L/ S& `" | 这种情况...
  • 多个线程调用同一个线程函数

    千次阅读 2012-03-08 20:15:53
    多个线程调用同一个线程函数 悬赏分:50 - 解决时间:2007-12-11 13:59 如题,能这样吗?因为有很多个操作,但是这些操作都是一样的,所以想用相同的线程函数,但是感觉运行时线程还是一个一个运行,并没有...
  • 之前有用ChromiumWebBrowser浏览器唤醒本地窗体。其实在用的时候就发现,...基本可以肯定的是,一定是跨线程调用了。本来想偷懒解决的问题,看来还是需要处理。处理的方法也无外乎那么几个。1. CheckForIllegalCro...
  • 使用两个线程调用同一静态方法(该静态方法不引用静态变量)、第一个线程被阻塞的时间大于第二个线程被阻塞的时间,若第一个线程与第二个线程的输出结果相同,则两个线程调用同一静态方法存在线程安全问题,若第一个...
  • QT线程调用界面函数

    千次阅读 2013-11-24 17:04:10
    2:如果在线程中想要调用界面函数,不可直接调用;则需要: (1):在线程中声明一个信号signal函数,不用实现,可以有参数同需要调用的界面类函数,也可以不用参数(和普通的signal与slot一样);signal不要指定...
  • Java 多线程调用 C++ dll

    千次阅读 2009-08-17 17:58:00
    前段时间到一个公司工作。在工作期间,需要给公司解决一个java调用dll的问题,该公司以前的java掉用dll存在一个多线程的问题。...所以当多线程调用时,就会出现数据混乱。因为全局变量在一个进程中是共享的。
  • delegate void SetTextCallback(string text);//委托 private const int count =5; //定义线程数 static Mutex mutexconslo = new Mutex();//控制同步 { for (int i = 0; i ; i++) /
  • Httpclient 多线程调用,高效配置

    千次阅读 2018-04-09 11:42:19
    最近公司通过API接口调用数据,本人搞了多线程调用。起初每次调用都单独 new HttpClient(),造成问题是内存越跑占用越大,请求越来越慢,甚至出现 Read Time Out 异常。之后了解HttpClient可复用,则改为单例请求,...
  • ArrayList在多线程调用Add()添加元素时的下标越界问题 高并发下ArrayList空值(null)问题 以下为上面文章的总结: 1:下标越界问题 public boolean add(E e) { ensureCapacityInternal(size + 1); // 是否需要扩容 ...
  • C#跨线程调用窗体控件

    千次阅读 2009-11-25 11:07:00
    前段时间遇到跨线程调用窗体控件的问题,其实一句话System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;就可以解决,但感觉会有不稳定因素,因此在网上找了一些相应的文章感觉还不错,第一种用...
  • 今天遇到一个笔试题,说的是:当一个线程进入一个对象的synchronized方法之后,其它线程能否进入该对象的其他方法? 答:很明显当其它方法是非synchronized方法时,调用是不受影响的,但当其它方法也是synchronized...
  • 示例代码: 1、定义单例类 ...在第一次调用的时候实例化 public class Singleton { //私有的默认构造子 private Singleton() { //初始化标识位 setFlag(true); } //注意,这里没有final privat
  • Handler 的handlerMessage()被调用在与handler绑定的Looper所在的线程
  • 目前写了一个多线程项目,由多个子项目组成,目前想在同步子线程中访问一个类中的初始化com口方法,但是线程可能同时进入初始化方法导致crash,想设置一个锁但是取到的 句柄地址都不一样无法上锁,请问这种情况要...
  • java 多线程调用单例类的同一个方法

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,574,410
精华内容 629,764
关键字:

线程调用其它线程