Join 就是加入的意思,也就是说新创建的线程加入到进程中,并马上执行。

看下面这段代码

             Console.WriteLine("start");
Thread myTask = new Thread(() =>
{
for (int i = ; i < ; i++)
{
Console.WriteLine("******" + i + "*****");
Thread.Sleep();
}
});
myTask.Start();
myTask.Join();
Console.WriteLine("stop");

效果图如下

在实际使用的时候会使用到jion的另一个重载方法

public bool Join(int millisecondsTimeout)

当使用这个方法设置超时时间的时候可以在超时时跳出线程,回到原来的线程。看下面代码测试

 Console.WriteLine("start");
Thread myTask = new Thread(() =>
{
for (int i = ; i < ; i++)
{
Console.WriteLine("******" + i + "*****");
Thread.Sleep();
}
});
myTask.Start();
myTask.Join();
if (!myTask.Join( * ))
{
Console.WriteLine("time out"); }

效果如下:

这个时候time out 就会在3秒时执行,但是从上面的结果上可以看到,myTask这个线程并没有结束,还是继续执行着,所以,当使用这个函数的时候,需要注意终止掉jion的线程,代码如下

 Console.WriteLine("start");
Thread myTask = new Thread(() =>
{
for (int i = ; i < ; i++)
{
Console.WriteLine("******" + i + "*****");
Thread.Sleep();
}
});
myTask.Start();
myTask.Join();
//Console.WriteLine("stop");
if (!myTask.Join( * ))
{
Console.WriteLine("time out");
myTask.Abort();
}

最终结果如下

Thread.Join(int millisecondsTimeout)的更多相关文章

  1. C#中Thread.Join()的理解

    最近在项目中使用多线程,但是对多线程的一些用法和概念还有有些模棱两可,为了搞清楚查阅了一写资料,写下这篇日志加深理解吧. Thread.Join()在MSDN中的解释很模糊:Blocks the ca ...

  2. Thread.Join理解

    Thread.Join:Blocks the calling thread until a thread terminates MainThread里面起了一个SubThread,从SubThread ...

  3. Thread.join()方法

    thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B.t.join() ...

  4. Thread .join 的用法一例

    在使用身份证读卡器时,要求 1. 身份证读到身份证 就 停止线程. 2. 关闭界面时会 自动停止调用读身份证的线程.这时候就需要用到 Thead.join 例子如下: Thread thread; p ...

  5. Part 92 Significance of Thread Join and Thread IsAlive functions

    Thread.Join & Thread.IsAlive functions Join blocks the current thread and makes it wait until th ...

  6. [译]Java Thread join示例与详解

    Java Thread join示例与详解 Java Thread join方法用来暂停当前线程直到join操作上的线程结束.java中有三个重载的join方法: public final void ...

  7. 多线程编程(一) - 关于C#中Thread.Join()

    Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread terminates 有两个主要问题:1.什么是the calli ...

  8. 关于C#中Thread.Join()的一点理解

    原文地址:http://www.cnblogs.com/slikyn/articles/1525940.html 今天是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个 ...

  9. Java Thread.join()详解(转)

    (1)join方法是可以中断的(2)在线程joiner在另一个线程t上调用t.join(),线程joiner将被挂起,直到线程t结束(即t.isAlive()返回为false)才恢复 package ...

随机推荐

  1. webpack + less

    使用less需要安装 'style-loader','css-loader','less-loader' 三个loader. 安装之后在webpack.config.js配置 const path = ...

  2. hadoop2.6.4【windows7】构建maven项目 系列2

    准备windows版本的hadoop2.6.4 下载windows版本的hadoop2.6.4解压在本地 新建maven项目构建hadoop依赖 <?xml version="1.0& ...

  3. Java操作 Redis 集群

    // 连接redis集群 @Test public void testJedisCluster() { JedisPoolConfig config = new JedisPoolConfig(); ...

  4. LeetCode -- Implement Stacks using Queue

    Question: Implement the following operations of a queue using stacks. push(x) -- Push element x to t ...

  5. webpack watch模式产生*.hot-update.json文件

    webpack --watch会产生*.hot-update.json文件,解决方法如下: output: { path: path.join(root, "dist"), fil ...

  6. Tomcat学习笔记(十三)

    服务器组件和服务组件 服务器组件 org.apache.catalina.Server接口的实例表示Catalina的整个servlet引擎,包含了所有的组件.使用一种优雅的方法来启动/关闭整个系统, ...

  7. Welcome to Workrave

    Welcome to Workrave Workrave is a free program that assists in the recovery and prevention of Repeti ...

  8. 转:LinkedHashMap使用(可以用来实现LRU缓存)

    1. LinkedHashMap概述: LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap. LinkedH ...

  9. js querySelector与getElementById

    querySelector不能取到id以数字开头的元素,据说是遵循css规范.而document.getElementById是可以的.

  10. 发布windows服务的批处理

    安装bat: C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe WatchWinService.exe pause 卸载bat ...