线程的创建

来源:互联网 发布:c语言自定义标识符 编辑:程序博客网 时间:2024/06/05 08:09
每个线程要执行的任务再run方法中实现。因此run方法是线程的任务处理逻辑的入口,它由java虚拟机再运行相应的线程时直接调用,而不是由应用代码调用。启动线程:Thread类的start方法是启动相应的线程。启动一个线程的实质是请求java虚拟机运行相应的线程,而这个线程具体何时能够运行是由线程调度器(scheduler)决定的。因此start方法调用结束并不意味着相应的线程已经开始运行,这个线程可能稍后会运行,也可能不会被运行。创建线程的方法:extends Thread和implements Runnable。run方法执行结束包括正常结束以及代码抛出异常而导致的中止。运行结束的线程所占有的资源会被java虚拟机垃圾回收。线程属于“一次性用品”,不能通过重新调用一个已经运行结束的线程start方法来使其重新运行。多次调用同一个线程实例的start方法会抛出IllegalThreadStateException异常。创建线程与创建其他对象的区别:java虚拟机会为每个线程分配调用栈(call stack)所需的内存空间。调用栈用于跟踪java代码(方法)间的调用关系以及java代码对本地代码(native code,通常是C代码)的调用。另外,java平台中的每个线程可能还有一个内核线程与之对应。因此相对来说,创建线程对象比创建其他类型的对象成本要高一点。
原创粉丝点击