您的位置:首页 > 编程语言 > Java开发

【Java】线程的创建和启动

2016-03-24 10:13 357 查看
一、继承Thread类创建线程类

定义Thread类的子类,并重写run()方法, 该run()方法为线程执行体。

创建Thread子类的实例,即创建子线程对象。

调用线程对象的start()方法启动该线程。

public class FirstThread extends Thread{
/**
* @param args
*/
private int i;
public void run(){
for(;i < 100; i++)
{
System.out.println(getName()+" "+ i);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 0; i <100; i++)
{
System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20)
{
new FirstThread().start();
new FirstThread().start();
}
}

}
}
主线程的执行体是main()方法。

使用继承Thread类的方法来创建线程类时,多个线程之间无法共享线程类的实例变量。

二、实现Runnable接口创建线程类

定义Runnable接口的实现类,重写run()方法

创建Runnable实现类的实例,调用线程对象的start()方法。

public class FirstThread implements Runnable{
private int i;
public void run() {
for(;i < 100; i++)
{
System.out.println(Thread.currentThread().getName()+" "+ i);
}
}
public static void main(String[] args) {
for(int i = 0; i <100; i++)
{
System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20)
{
FirstThread ft = new FirstThread();
new Thread(ft,"线程1").start();
new Thread(ft,"线程2").start();
}
}
}
}
采用Runnable接口的方式创建多个线程可以共享线程类的实例变量。

三、使用Callable和Future创建线程。

线程的生命周期:new/Runnabe/Running/Blocked/Dead.

大多操作系统采用抢占式策略,系统会给每个可执行的线程一个小时间段来处理任务,当该时间段用完后,系统就会剥夺该线程所占用的资源。但一些小型设备如手机可能采用协作式调度策略,只有当一个线程调用了sleep()或yield()方法后才会放弃所占用的资源,也就是必须由该线程主动放弃所占资源。

不要对处于死亡状态的线程调用start()方法,会引发IllegalThreadStateException异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: