• 线程练习


      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 using System.Threading;
     10 using System.Threading.Tasks;
     11 
     12 namespace WindowsFormsApplication1
     13 {
     14     public partial class Form1 : Form
     15     {
     16         public Form1()
     17         {
     18             InitializeComponent();
     19         }
     20 
     21         private void button1_Click(object sender, EventArgs e)
     22         {
     23             Thread t = new Thread(test1);
     24             t.Start();
     25 
     26             Thread t1 = new Thread(new ThreadStart(test1));
     27             t1.Start();
     28 
     29 
     30             Thread t2 = new Thread(() => { test1(); });
     31             t2.Start();
     32 
     33             Thread t3 = new Thread(delegate() { test1(); });
     34             t3.Start();
     35 
     36             Thread t4 = new Thread(() => { Console.WriteLine("test1" + Thread.CurrentThread.ManagedThreadId); });
     37             t4.Start();
     38 
     39 
     40             Task task = new Task(test1);
     41             task.Start();
     42 
     43 
     44             Thread t5 = new Thread(test2);
     45             t5.Start(2);
     46 
     47             Thread t6 = new Thread(() => { test2(2); });
     48             t5.Start();
     49 
     50             Thread t7 = new Thread((o => { test2(o); }));
     51             t7.Start(3);
     52 
     53             Thread t8 = new Thread(new ParameterizedThreadStart(test2));//参数类型必须object 且只有一个参数
     54             t8.Start(2);
     55 
     56             Test4 test = new Test4();
     57             test.a = 4;
     58             Thread t9 = new Thread(test.test4);
     59             t9.Start();
     60 
     61             ThreadPool.QueueUserWorkItem(o => { test1(); });
     62             Parallel.Invoke
     63                 (
     64                 () => { test1(); }
     65                 );
     66 
     67             var action = new Action[]
     68             {
     69                 ()=>test1(),
     70             };
     71             Parallel.Invoke(action);
     72 
     73             Task.Factory.StartNew(() => { });
     74 
     75 
     76 
     77             TaskFactory taskFactory = new TaskFactory();
     78             List<Task> taskList = new List<Task>();
     79 
     80             Task any = taskFactory.ContinueWhenAny(taskList.ToArray(), t =>
     81             {
     82 
     83                 //t.AsyncState
     84 
     85                 Console.WriteLine("这里是ContinueWhenAny {0}", Thread.CurrentThread.ManagedThreadId);
     86 
     87             });
     88 
     89 
     90 
     91             Task all = taskFactory.ContinueWhenAll(taskList.ToArray(), tList =>
     92             {
     93 
     94                 Console.WriteLine("这里是ContinueWhenAll {0}", Thread.CurrentThread.ManagedThreadId);
     95 
     96             });
     97 
     98 
     99 
    100 
    101 
    102             Task.WaitAny(taskList.ToArray());//执行的线程等待某一个task的完成
    103 
    104             Console.WriteLine("after WaitAny{0}", Thread.CurrentThread.ManagedThreadId);
    105 
    106             Task.WaitAll(taskList.ToArray());//执行的线程等待全部的task的完成
    107 
    108             Console.WriteLine("after WaitAll{0}", Thread.CurrentThread.ManagedThreadId);
    109         }
    110 
    111 
    112 
    113         private void test1()
    114         {
    115             Console.WriteLine("test1" + Thread.CurrentThread.ManagedThreadId);
    116         }
    117 
    118         private void test2(object a)
    119         {
    120             Console.WriteLine("test2" + Thread.CurrentThread.ManagedThreadId);
    121 
    122         }
    123 
    124         private int test3(int a)
    125         {
    126             Console.WriteLine("test3" + Thread.CurrentThread.ManagedThreadId);
    127             return 3;
    128         }
    129     }
    130 
    131     public class Test4
    132     {
    133         public int a { get; set; }
    134 
    135         public void test4()
    136         {
    137             Console.WriteLine("test" + a + Thread.CurrentThread.ManagedThreadId);
    138         }
    139     }
    140 }
  • 相关阅读:
    Nginx缓存[proxy cache、memcache]
    Nginx重写规则
    同步异步,阻塞非阻塞 和nginx的IO模型
    cookie & session
    HTTP状态码
    web简单的整体测试
    关于 如何用电脑的adb连接Mumu模拟器
    关于社保断交一个月的影响
    关于androidStudio的下载
    可以直接拿来用的android开源项目研究
  • 原文地址:https://www.cnblogs.com/anyihen/p/12826350.html
Copyright © 2020-2023  润新知