本文目录
- java中thread的start()和run()有何区别
- threadstart()
- java中thread的start和run的区别
- c#thread.start()运行几分钟就死掉了
- java thread.start是线程开始 怎么关闭线程呢
- java thread start 方法会立即执行吗
- JAVA里thread.start与thread.join 哪个有前哪个在后
java中thread的start()和run()有何区别
1、start()方法来启动线程,真正实现了多线程运行,这时无需等待。
run方法体代码执行完毕而直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。
通过Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。
2、run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码;
而如果直接用run方法,这只是调用一个方法而已,程序中依然只有主线程--这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。
3、调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。
4、这两个方法需要把并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void.。
扩展资料:
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。
通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。
threadstart()
用 ParameterizedThreadStart 啊。比如:public static void Main() { // To start a thread using a shared thread procedure, use // the class name and method name when you create the // ParameterizedThreadStart delegate. C# infers the // appropriate delegate creation syntax: // new ParameterizedThreadStart(Work.DoWork) // Thread newThread = new Thread(Work.DoWork); // Use the overload of the Start method that has a // parameter of type Object. You can create an object that // contains several pieces of data, or you can pass any // reference type or value type. The following code passes // the integer value 42. // newThread.Start(42); // To start a thread using an instance method for the thread // procedure, use the instance variable and method name when // you create the ParameterizedThreadStart delegate. C# infers // the appropriate delegate creation syntax: // new ParameterizedThreadStart(w.DoMoreWork) // Work w = new Work(); newThread = new Thread(w.DoMoreWork); // Pass an object containing data for the thread. // newThread.Start("The answer."); } public static void DoWork(object data) { Console.WriteLine("Static thread procedure.Data=’{0}’", data); } public void DoMoreWork(object data) { Console.WriteLine("Instance thread procedure.Data=’{0}’", data); }
java中thread的start和run的区别
java中thread的start()方法和run()方法的区别:t.start(); 该行代码相当于是启动线程,t.run(); 该行代码相当于是使用t这个类中的run方法而已。
c#thread.start()运行几分钟就死掉了
可能原因:自定义方法Threading()是在UI主线程空闲上执行,而timer_Elapsed是在线程池当中的一个线程上执行,两者执行时很可能在执行 void timer_Elapsed(object sender){t = new Thread(new ThreadStart(Threadp)); //实例化线程//线程池当中的线程执行到这里时,UI主线程执行Threading()的 t.Abort();//关闭线程t.Start();//启动线程}解决:你将所有方法都用try括起来,捕获异常信息,你一看就明白了。建议:你一秒刷新一次TextBox控件,为什么要建一个Thread呢?(这个是很消耗资源的),可以像下面这样写。同时还可以查看this.Invoke和this.BeginInvoke的区别。这个还可以使用BackgroundWorker来完成这个功能。private void button1_Click(object sender, EventArgs e){System.Threading.Timer timer1 = new System.Threading.Timer(new TimerCallback(timer_Elapsed), null, 0, 1000);//将这个d定义字段,放到方法外部setText d = new setText(Threading); //实例化一个委托}void timer_Elapsed(object sender){this.Invoke(d); //在拥用此控件的基础窗体句柄的线程上执行指定的委托}
java thread.start是线程开始 怎么关闭线程呢
1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。3. 使用interrupt方法中断线程。
java thread start 方法会立即执行吗
楼主:在Java中是这样的,当你创建了一个线程,并调用了start方法,则该线程会开始执行,即立即执行。API说明如下:publicvoidstart()使该线程开始执行;Java虚拟机调用该线程的run方法。结果是两个线程并发地运行;当前线程(从调用返回给start方法)和另一个线程(执行其run方法)。多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。有问题欢迎提问,满意请采纳,谢谢!
JAVA里thread.start与thread.join 哪个有前哪个在后
线程必须要先start,才能join,只有启动了,才能对线程进行操作。如有一个线程叫A,那么请看以下示例代码A.start(); //启动A线程A.join(); //邀请A线程先执行,本线程先暂停执行,等待A线程执行完后,主线程再接着往下执行System.out.println("OK"); //这句话,要等到A线程执行完后,主线程获取到执行权后,才会被执行 这里的主线程是指执行以上三行代码的线程