在网上搜了好多,没有搜到这方面的内容,自己浅薄写点吧。

1、.net和java的主线程和子线程,原理是类似的

(1)、当子线程是前台线程时,主线程结束,子线程并未结束(还将继续运行,即进程未结束)

(2)、若是子线程改成后台线程,主线程结束,子线程也会结束(从而进程也会关闭)

.net代码示例如下,java类似

/// <summary>
/// 测试主线程子线程结束先后问题
/// </summary>
static void TestThreadParentAndSon()
{
//通过ParameterizedThreadStart创建线程
string a = "ddd";
//此处,当子线程要传“形参”,需要用ParameterizedThreadStart来实力话(没有形参,用ThreadStart即可),
//java,多线程中,传递形参,也要用final修饰
//java,多线程中,共享的变量为何在main()里必须用final修饰
Thread thread = new Thread(new ParameterizedThreadStart(Thread1));
//此处可以证明,当子线程是前台线程时,主线程结束,子线程并未结束(还将继续运行,即进程未结束)
//若是子线程改成后台线程,主线程结束,子线程也会结束(从而进程也会关闭)
//默认是前台线程
//thread.IsBackground = true;
//给方法传值
thread.Start(a);
//此句,是输入参数,即可往下执行
Console.ReadKey();
Thread th = Thread.CurrentThread;//获取当前工作的线程
th.Abort();
}
/// <summary>
/// 创建有参的方法
/// 注意:方法里面的参数类型必须是Object类型
/// </summary>
/// <param name="obj"></param>
static void Thread1(object obj)
{
obj += "哈哈";
while (true)
{
Console.WriteLine(obj+" "+DateTime.Now);
}
}

2、java和.net中多线程的共享变量原理和实现方式,是很不一样的  

(1)、.net子线程可以使用主线程的变量,而且变量在子线程中改变,主线程中也会改变。如过是多个子线程的话,那么就会存在是否要加锁的问题

 static void Main(string[] args)
{
int sharedValue = ;
Thread t1 = new Thread(() => {
// Do something.
sharedValue += ;
Console.WriteLine("子线程值为a:"+sharedValue);
Thread.Sleep();
Console.WriteLine("子线程值为b:" + sharedValue);
Console.ReadLine();
});
t1.Start();
sharedValue += ;
//Thread.Sleep(1000);
Console.WriteLine("主线程结束a,共享值为:"+sharedValue);
Thread th = Thread.CurrentThread;//获取当前工作的线程
th.Abort();
Console.WriteLine("主线程结束b,共享值为:" + sharedValue);
}

(2)、对java来说,主线程向子线程传参,或者在子线程中使用主线程的变量,那么此变量都要加上final修饰

public class testcs {
//验证多线程,传参问题
public static void main(String[] args)
{
int c=3;
try {
System.out.println("hello world");
test(c);
} catch (Exception e) {
e.printStackTrace();
}
//File file = new File("D:\\dev3\\统一渠道管理\\EB.SaleChannelPlatform");
//deleteFiles(file);
} /**
*
* @param b
*/
public static void test(final int b) {
final int a = 10;
//此时主线程条用test方法,那么此方法还在主线程里,只有到了下句new Thread并启动(thread里面的程序才属于子线程)
new Thread(){
public void run() {
System.out.println(a);
System.out.println(b);
};
}.start();
}
}

java多线程和.net多线程区别与联系的更多相关文章

  1. -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中

     本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait( ...

  2. Java学习手记2——多线程

    一.线程的概念 CPU执行程序,就好比一个人在干事情一样,同一个时间你只能做一件事情,但是这样的效率实在是太低了,在你用电脑的时候,听歌就不能浏览网页,看电影就不能下载视频,你想想是不是很蛋疼. 所以 ...

  3. Java 并发性和多线程

    一.介绍 在过去单 CPU 时代,单任务在一个时间点只能执行单一程序.之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程.虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个 ...

  4. Java并发性和多线程

    Java并发性和多线程介绍   java并发性和多线程介绍: 单个程序内运行多个线程,多任务并发运行 多线程优点: 高效运行,多组件并行.读->操作->写: 程序设计的简单性,遇到多问题, ...

  5. Java并发性和多线程介绍

    java并发性和多线程介绍: 单个程序内运行多个线程,多任务并发运行 多线程优点: 高效运行,多组件并行.读->操作->写: 程序设计的简单性,遇到多问题,多开线程就好: 快速响应,异步式 ...

  6. 带着新人看java虚拟机04(多线程篇)

    我记得最开始接触多进程,多线程这一块的时候我不是怎么理解,为什么要有多线程啊?多线程到底是个什么鬼啊?我一个程序好好的就可以运行为什么要用到多线程啊?反正我是十分费解,即使过了很长时间我还是不是很懂, ...

  7. Java简明教程 12.多线程(multithreading)

    单线程和多线程 关于它们的区别,zhihu上有一个回答,我认为十分不错,如下: . 单进程单线程:一个人在一个桌子上吃菜. . 单进程多线程:多个人在同一个桌子上一起吃菜. . 多进程单线程:多个人每 ...

  8. Java面试中的多线程问题

    很多核心 Java 面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的.这篇文章收集了 Java ...

  9. java中多线程 - 如何创建多线程

    线程 什么是线程: 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源 表面上 ...

随机推荐

  1. Spark学习笔记——安装和WordCount

    1.去清华的镜像站点下载文件spark-2.1.0-bin-without-hadoop.tgz,不要下spark-2.1.0-bin-hadoop2.7.tgz 2.把文件解压到/usr/local ...

  2. 【代码审计】XYHCMS V3.5任意文件下载漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  3. 【SpringCloud微服务实战学习系列】客户端负载均衡Spring Cloud Ribbon

    Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的RES模板 ...

  4. I - Cows

    来源 poj 3348 Your friend to the south is interested in building fences and turning plowshares into sw ...

  5. 夺冠概率|2012年蓝桥杯B组题解析第九题-fishers

    (17')夺冠概率 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能. 假设有甲.乙.丙.丁四个球队.根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表: 甲 乙 丙 丁 甲 - 0. ...

  6. 校验字符串是否是JSON格式,将不规则展示的json格式的字符串进行规则展示(json格式化)

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   var str = {"code": "","svcname" ...

  7. tomcat的缺少tcnative-1.dll的解决(申明:来源于网络)

    tomcat的缺少tcnative-1.dll的解决 地址:http://blog.csdn.net/topwqp/article/details/7713388

  8. MySQL设置只读模式

    MySQL设置了主从复制,为保证数据一致性需要在从库设置只读状态 查看默认读写状态 show global variables like "%read_only%"; 设置只读 # ...

  9. ELK之使用filebeat收集java运行日志

    安装filebeat修改配置文件/etc/filebeat/filebeat.yml filebeat.prospectors: - type: log enabled: true #日志路径 pat ...

  10. JS 通过字符串取得对应对象

    //对Array的扩展,查找所有满足条件的元素 Array.prototype.findAll = function (match) { var tmp = []; for (var i = 0; i ...