Java教程

多线程编程

本文主要是介绍多线程编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

【●】多线程编程
一、多线程工作原理
1.多线程任务的工作特点
● 他们本质上就是异步的,需要有多个并发事务。
● 各个事务的运行顺序可以是不确定的,随机的,不可预测的。
● 这样的编程任务可以被分成多个执行流,每个流都有一个要完成的目标。
● 根据应用的不同,这些子任务可能都要计算出一个中间结果,用于合并得到最后的结果。

2.什么是进程
进程就是运行中的程序。
进程在运行过程中独享系统资源 CPU 内存。
多个进程运行时是串行。

3.什么是线程
线程是进程中最小单元。
  一个进程里可以包含多个线程。
多个线程同时运行时,共享资源 是并行执行。

二、多线程编程
1.多线程相关模块
●thread和threading模块允许程序员创建和管理线程。
●thread模块提供了基本的线程和锁的支持,而threading提供了更高级别、功能更强的线程管理功能。
[root@dc python]# vim thread.py

import threading  # 导入多线程模块
import time

def say_hello():
    for x in range(10):
        print("勇敢牛牛 不怕困难")
        time.sleep(1)

def say_world():
    for y in range(10):
        print("天王盖地虎 宝塔镇河妖")
        time.sleep(1)

t1 = threading.Thread(target=say_hello)
t2 = threading.Thread(target=say_world)
t1.start()  # 启动 t1 线程
t2.start()
[root@dc python]# python3 thread.py

执行脚本后可以显示所在网络  在线主机的ip 及不在线主机的ip通过多线程的方式编程。
格式:
192.168.4.21 up
192.168.4.25 down

[root@dc python]# vim ping.py

import subprocess    #导入模块
import threading  # 导入多线程模块

def ping(host_ip):   #定义检测主机是否在线的函数ping
    r = subprocess.run('ping -c2 %s &> /dev/null' % host_ip, shell=True)
    if r.returncode == 0:
         print(host_ip, ': up')
    else:
        print(host_ip, ': down')

#ping('192.168.4.100')  #执行函数时给函数传要检测的ip地址

if __name__ == '__main__':
 #以循环的方式将所要检测的ip地址传给函数
    for x in range(1, 255):
        ipv4 = '192.168.1.%d' % x
        ping(ipv4)
#以多线程的方式执行ping()函数
    for x in range(1,101):
        ipv4 = '192.168.4.%d' % x
        # 创建一个线程,执行ping 函数
        t = threading.Thread(target=ping, args=(ipv4,))
        t.start()

[root@dc python]# python3 ping.py
 

这篇关于多线程编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!