校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 专业课 > 线程相关
题目

Linux 平台,不提供任何相关库函数和工具包,只利用线程的随机调度特性和 sleep 函数的低精度特性,请编写一段程序实现:给一组字符,输出该组字符的一个随机化排列。

解答
# coding=utf-8
import threading
import time

targetStr = 'abcdefg' # 不重复字符串
targetStrLength = len(targetStr)
resultStr = '' # 随机排序的字符串保存到这里
lock = threading.RLock()


class RandThread(threading.Thread):
def __init__(self, num):
threading.Thread.__init__(self)
self.num = num

def run(self):
time.sleep(0.5)
lock.acquire()
global targetStr
global resultStr
resultStr += targetStr[self.num]
lock.release()


def main():
threads = []
# 创建线程对象
for i in xrange(targetStrLength):
threads.append(RandThread(i))
# 启动线程
for t in threads:
t.start()
# 主线程等待子线程结束
for t in threads:
t.join()

print 'pre: ', targetStr
print 'random: ', resultStr

if __name__ == '__main__':
main()


C 0条回复 评论

帖子还没人回复快来抢沙发