多线程如何获取结果

简介: 下午的综合面试,技术方面只询问了项目,剩下时间全是背景调查,双方提问、互相了解情况。所以今天的文章就没有面试题了,总结一位老哥教我的一个知识点:多线程如何获取结果。

1.场景

大家一般都会开启多线程去处理任务,如果需要获取线程处理结果怎么办?

有人会说『全局变量』,但是又会引出共享全局变量后资源竞争导致数据错误的问题。只能通过添加互斥锁进行解决,互斥锁又不能发挥多线程的优势,很是头大。

那么该如何解决呢?

2.解决办法

老哥教我可以自定义一个类解决:

import threading
class MyThread(threading.Thread):
    def __init__(self, func, args):
        super(MyThread, self).__init__()
        self.func = func
        self.args = args
        self.result = self.func(*self.args)
    def get_result(self):
        threading.Thread.join(self)
        try:
            return self.result
        except:
            return None

使用方式:直接创建一个对象 thread,在使用方法 thread.start() 后,再调用 get_result() 方法即可获取。

相关文章
|
2天前
|
Java 调度
|
2月前
|
大数据 C#
C#实现多线程的几种方式
C#实现多线程的几种方式
|
3月前
|
Java API 调度
Java多线程基础(线程与进程的区别,线程的创建方式及常用api,线程的状态)
Java多线程基础(线程与进程的区别,线程的创建方式及常用api,线程的状态)
70 0
Java多线程基础(线程与进程的区别,线程的创建方式及常用api,线程的状态)
|
存储 Java C++
多线程的2种实现方式
多线程的2种实现方式
95 0
|
Java 调度
关于对多线程中常见问题的总结
关于对多线程中常见问题的总结
线程的3种实现方式并深入源码简单分析实现原理(1)
线程的3种实现方式并深入源码简单分析实现原理(1)
142 0
线程的3种实现方式并深入源码简单分析实现原理(1)
线程的3种实现方式并深入源码简单分析实现原理(3)
线程的3种实现方式并深入源码简单分析实现原理(3)
129 0
线程的3种实现方式并深入源码简单分析实现原理(3)
线程的3种实现方式并深入源码简单分析实现原理(2)
线程的3种实现方式并深入源码简单分析实现原理(2)
102 0
线程的3种实现方式并深入源码简单分析实现原理(2)
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(五)
⑦. 线程同步 ①. 买票案例出现的两个问题 ②. 同步代码块synchronized ③. 同步方法
107 0
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(五)