多线程小结(1)

原文出处

定义就不多说了,直接上代码

 1 /// <summary>
 2     /// 单线程应用
 3     /// </summary>
 4    class Program
 5    {
 6      static void Main(string[] args)
 7      {
 8         Console.WriteLine("进入主线程");
 9         User u = new User("小刚");
10         u.Getshow();
11         Console.WriteLine("主线程结束");
12      }
13    }
14     public class User
15     {
16         private string name;
17         public User(string name)
18         {
19             this.name = name;
20         }
21         public void Getshow()
22         {
23             Console.WriteLine("Name=>" + name);
24         }
25     }  

这样的一个控制台程序,他就包含了一个线程,这个线程是由系统自动分配给他的,也就是主线程。

是从入口函数Main方法开始主线程,进行顺序控制流程。程序到达GetShow时候线程转到该方法内部执行,当该方法内部执行完成之后在回到Main方法里面。继续顺序执行下面的输出Console.WriteLine("主线程结束");执行流程如下。这也就是为啥说是单线程了,只会走一条道。

现在开启一个多线程执行GetShow里面的行为,不采用主线程执行

(这句话的意思是再从系统中拉出来一个线程,去执行其他的方法;不会与主线程抢占“人力”)

 1 /// <summary>
 2 /// 多线程应用
 3 /// </summary>
 4 class Program
 5 {
 6     static void Main(string[] args)
 7     {
 8         Console.WriteLine("进入主线程");
 9         User u = new User("小刚");
10         Thread subthread = new Thread(new ThreadStart(u.Getshow));//创建新线程
11         subthread.Start(); //开启线程
12         Console.WriteLine("主线程结束");
13     }
14 }
15
16 public class User
17 {
18     private string name;
19     public User(string name)
20     {
21         this.name = name;
22     }
23     public void Getshow()
24     {
25         Console.WriteLine("Name=>" + name);
26     }
27 }  

再开启一个线程

在主线程里面,新开了一个线程,去执行Getshow方法里面的操作。

主线程创建新的线程以后,不会等待Getshow里面的代码执行完毕。//相当于系统又给他分配了一个干活的帮手,俩人齐头并进同时把事干完,但是谁先完成不一定。也可能是主线程也可能是新来的帮手先完成

而是直接执行后面的代码:Console.WriteLine("主线程结束");

原文地址:https://www.cnblogs.com/ZkbFighting/p/9030345.html

时间: 2024-10-04 21:53:12

多线程小结(1)的相关文章

黑马程序员___多线程小结

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 进程和线程 进程是正在进行中的程序,指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程. Java程序的进程里有几个线程:主线程, 垃圾回收线程(后台线程) 线程是指进程中的一个执行任务(控制单元),一个进程中可以运行多个线程,多个线程可共享数据.多线程:在同一个进程中同时运行的多个任务;一个进程至少有一个线程,为了提高效率,可以在一个进程中

【Java基础】Java多线程小结

在说多线程之前,首先要清楚为啥要提出多线程,这就要明白线程和进程间的区别了. 线程和进程间的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程,同一个进程中

多线程小结

一.多线程的创建和启动 1.继承至Thread类,重写run方法 public class ThreadDemo extends Thread { public void run(){ for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"..."+i); } } } public class ThreadMain { public static void main(String[]

java多线程小结,及解决应用挂死的问题

这两天为了定位JBOSS老是挂死的问题,学习了一下JAVA多线程方面的知识,在此总结一下 1.在Java程序中,JVM负责线程的调度.线程调度是指按照特定的机制为多个线程分配CPU的使用权. 调度的模式有两种:分时调度和抢占式调度.分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间:抢占式调度是根据线程的优先级别来获取CPU的使用权.JVM的线程调度模式采用了抢占式模式. 2.Thread类实际上也是实现了Runnable接口的类. 在启动的多线程的时候,需要先通过Thr

【转】C#绝对新手之C#中的多线程小结

大概有4种方法: Dispatcher.异步委托.手动多线程.BackgroundWorker,另外还有一个DispatcherTimer,是定时器. 其中Dispatcher与DispatcherTimer相同,是利用在主线程进行任务优先级的排列来模拟多线程,因此其中实质是单线程 ,所以大负荷的运算不宜用它们.在异步调用的时候,使用Dispatcher.Invoke(addItem, image); BackgroundWorker会到线程池去抓一个线程作为工作线程,完成工作后切换回 UI 线

Java多线程小结

JAVA实现多线程的方式有两种,继承Thread,实现Runnable, 但在JDK1.5之后又有一种新的方式:实现Callable<V>接口 package Test2016.demo; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.c

Android 多线程小结

1.启动欢迎界面 1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 // TODO Auto-generated method stub 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.welcome); 6 new Handler().postDelayed(r, 1000);// 1秒后关闭,并跳转到主页面 7 } 8 9 R

ios 多线程小结----- GCD篇

//3 GCD(充分利用设备的多盒)-------------屏蔽了线程,只能看见任务 队列步骤两步,定制任务,将任务添加到队列.GCD将添加的任务,放到线程中去执行,自动执行,自动释放原则:先进先出,先添加的任务先执行,有别于栈的先进后出,先添加的任务后执行 -------GCD--- GCD有两个用来执行任务的函数:同步函数,异步函数同步:按顺序执行任务,同一条线程执行(不开线程)异步:同时执行任务(开启新线程) 同步,异步,并发,串行同步:当前线程执行,不具备开启新线程的能力异步:在新线程

关于多线程小结

在查找资料和学习的过程中留下的一点总结,敬请拍砖指教. 程序.进程.线程的区别? 进程是一个程序的进行时状态,一个程序运行在不同的数据集上可以形成多个进程.线程是进程的一个运行单元,一个进程中可以有多个线程. volatile 和 synchronized 区别 volatile 是变量修饰符,使线程不拷贝主内存中的变量而是直接操作主内存中的变量,从而保持变量的一致性,但是volatile在变量的值依赖于它的前一个值时会失效. synchornized 修饰方法或代码块,使得整个代码块获得监视器