zoukankan      html  css  js  c++  java
  • winform 练习多线程

    先看ui设计

    wait属性设置

    code

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    
    namespace Multithreading
    {
        public partial class formMain : Form
        {
            delegate void HandleWelComeDelegate();  //声明一个委托
            HandleWelComeDelegate interfaceUpdateHandle;
            Thread td;
    
            public formMain()
            {
                InitializeComponent();
                interfaceUpdateHandle = new HandleWelComeDelegate(StartPro); //实例化委托对象
            }
    
    
            /// <summary>
            /// 加载正在等待的窗体
            /// </summary>
            private void ShowWait()
            {
                Wait obj = new Wait();
                obj.ShowDialog();
            }
    
            /// <summary>
            /// 启动线程
            /// </summary>
            public void StartPro()
            {
                td = new Thread(ShowWait);
                td.Start();
            }
    
            private void formMain_Load(object sender, EventArgs e)
            {
                this.Invoke(interfaceUpdateHandle);//用指定的参数列表执行指定的委托
    
    
                Thread.Sleep(2000);//堵塞2秒
    
                td.Abort();//线程销毁
            } 
        }
    }

    源码下载

    多线程优化和缺点

    何时使用多线程技术,何时避免用它,是我们需要掌握的重要课题。多线程技术是一把双刃剑,在使用时需要充分考虑它的优缺点。
    多线程处理可以同时运行多个线程。由于多线程应用程序将程序划分成多个独立的任务,因此可以在以下方面显著提高性能:
    (1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;

    (2)当前没有进行处理的任务时可以将处理器时间让给其它任务;

    (3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;

    (4)可以随时停止任务;

    (5)可以分别设置各个任务的优先级以优化性能。

     是否需要创建多个线程取决于各种因素。在以下情况下,最适合采用多线程处理:
    (1)耗时或大量占用处理器的任务阻塞用户界面操作;

    (2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。


    同样的 ,多线程也存在许多缺点 ,在考虑多线程时需要进行充分的考虑。多线程的主要缺点包括:
    (1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。

    (2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。

    (3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。

    (4)对公有变量的同时读或写。当多个线程需要对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修 改;另外 ,当公用变量的读写操作是非原子性时,在不同的机器上,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误 是程序员无法预知的。

  • 相关阅读:
    jvM垃圾回收
    Java快速失败和安全失败
    方法覆盖和方法重载
    leetcode-Reverse Words in a String
    自己玩玩
    leetcode-Reverse Vowels of a String
    leetcode-Reverse String
    leetcode-Multiply Strings
    java多线程-cas及atomic
    @media响应式布局
  • 原文地址:https://www.cnblogs.com/suntanyong88/p/5533631.html
Copyright © 2011-2022 走看看