java多线程和.net多线程区别与联系
2021-07-09 17:07
标签:tac and int 程序 trace final class stat java 在网上搜了好多,没有搜到这方面的内容,自己浅薄写点吧。 1、.net和java的主线程和子线程,原理是类似的 (1)、当子线程是前台线程时,主线程结束,子线程并未结束(还将继续运行,即进程未结束) (2)、若是子线程改成后台线程,主线程结束,子线程也会结束(从而进程也会关闭) .net代码示例如下,java类似 2、java和.net中多线程的共享变量原理和实现方式,是很不一样的 (1)、.net子线程可以使用主线程的变量,而且变量在子线程中改变,主线程中也会改变。如过是多个子线程的话,那么就会存在是否要加锁的问题 (2)、对java来说,主线程向子线程传参,或者在子线程中使用主线程的变量,那么此变量都要加上final修饰 /** java多线程和.net多线程区别与联系 标签:tac and int 程序 trace final class stat java 原文地址:https://www.cnblogs.com/pengzhong2007/p/9565504.html///
//默认是前台线程
//thread.IsBackground = true;
//给方法传值
thread.Start(a);
//此句,是输入参数,即可往下执行
Console.ReadKey();
Thread th = Thread.CurrentThread;//获取当前工作的线程
th.Abort();
}
/// static void Main(string[] args)
{
int sharedValue = 0;
Thread t1 = new Thread(() => {
// Do something.
sharedValue += 3;
Console.WriteLine("子线程值为a:"+sharedValue);
Thread.Sleep(1000);
Console.WriteLine("子线程值为b:" + sharedValue);
Console.ReadLine();
});
t1.Start();
sharedValue += 1;
//Thread.Sleep(1000);
Console.WriteLine("主线程结束a,共享值为:"+sharedValue);
Thread th = Thread.CurrentThread;//获取当前工作的线程
th.Abort();
Console.WriteLine("主线程结束b,共享值为:" + sharedValue);
}
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();
}
}