zoukankan      html  css  js  c++  java
  • 记一下今天上下班学的Thread

    1 Thread 默认为前台线程,即主程序退出后,线程还可以继续(曾经就掉入这个坑中,使用两线程分别进行UDP收发,结果发线程结束了退出方法,收线程还在继续)

    2 Thread 没有可以暂停,可以重新启动,但是没有结束方法,使用Abort()方法强制销毁会抛异常。

    3 线程的等待用Join()实现

                List<Thread> threadList = new List<Thread>();
                for (int i = 0; i < 5; i++)
                {
                    string name = string.Format("btnThread_Click_{0}", i);
                    ThreadStart method = () => this.TestThread(name);
                    Thread thread = new Thread(method);//1 默认前台线程:程序退出后,计算任务会继续
                    thread.IsBackground = true;//2 后台线程:程序退出,计算立即结束
                    thread.Start();
                    threadList.Add(thread);
    
                    //ParameterizedThreadStart method = o => this.TestThread(o.ToString());
                    //Thread thread = new Thread(method);
                    //thread.Start(name);
                }
    
                foreach (Thread thread in threadList)
                {
                    thread.Join();
                }

    4 Thread 也没有回调和返回值,如果使用回调函数,需要手动实现

            /// <summary>
            /// 使用Thread 完成多线程回调
            /// </summary>
            /// <param name="method">要多线程执行的任务</param>
            /// <param name="callback">回调执行的任务</param>
    
            private void ThreadBeginInvoke(ThreadStart method, Action callback)
            {
                ThreadStart methodAll = new ThreadStart(() =>
                {
                    method.Invoke();
                    callback.Invoke();
                });
                Thread thread = new Thread(methodAll);
                thread.Start();
            }
    将偷懒进行到极致,是一个程序员的基本素养
  • 相关阅读:
    [LintCode] 最长上升子序列
    [LintCode] 最长公共前缀
    [LintCode] A + B 问题
    [hihoCoder] 拓扑排序·一
    [LintCode] 拓扑排序
    [LintCode] 第k大元素
    [LintCode] 最小路径和
    [LeetCode] Factorial Trailing Zeros
    [LintCode] 尾部的零
    [LeetCode] Length of Last Word
  • 原文地址:https://www.cnblogs.com/bamboo-zhang/p/9142680.html
Copyright © 2011-2022 走看看