java线程启动java线程启动方式

2024-04-21 14:38:24 浏览

这个需要用到后台线程执行,否则一运行主线程就卡住了:

java线程启动java线程启动方式

public partial class Form1 : Form { // 打印放在后台执行 BackgroundWorker m_Worker; // 用一个标记来看是否请求停止执行 bool m_NeedRun = false; public Form1() { InitializeComponent(); m_Worker = new BackgroundWorker(); m_Worker.DoWork += new DoWorkEventHandler(m_Worker_DoWork); } void m_Worker_DoWork(object sender, DoWorkEventArgs e) { while( m_NeedRun ) // 后台可以循环打印,不影响主线程的运行 Console.Write( "xxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyy" ); } private void button1_Click(object sender, EventArgs e) { m_NeedRun = true; m_Worker.RunWorkerAsync(); } private void button2_Click(object sender, EventArgs e) { m_NeedRun = false; } }

1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:

通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。

然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止,

CPU提供支持的线程是指直接支持的本机(native)线程,也就是一般操作系统可以直接支持的线程。

若不使用超线程(hytperthreading)之类的技术,通常对于对称多处理机(SMP)来说,CPU支持同时运行的线程数等于CPU核心数(HT能让一个核跑两个线程)。

程序中的线程可以就是本机线程——对于C、C++等本机语言,通常使用的线程库就是创建这种线程。

创建本机线程开销比较大,若只需要多任务特性而不需要指定哪个任务由哪个CPU核心运行(CPU affinity)等,可以通过模拟而不直接使用本机线程。

更高层的语言实现可能使用这种线程模型,例如Java虚拟机可以使用green thread。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。