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

Java多线程(1)——多线程创建(传智播客毕老师视频讲解)

2014-09-11 08:30 351 查看
1、进程与线程

进程:是一个正在执行的程序。每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元。

线程:就是进程中一个独立的控制单元。线程在控制着进程的执行。

特性:随机性。谁抢到谁执行,至于执行多长,cpu说了算。

一个进程中至少有一个线程。

2、创建线程方式

2.1、继承Thread类创建线程:

步骤:2.1.1、定义类继承Thread;

2.1.2、复写Thread类中的run方法;

2.1.3、调用线程的start方法,该方法两个作用:启动线程,调用run方法。

public class CreateXian extends Thread
{
static int i;
public void run()
{
for(i=0;i<10;i++)
{
System.out.println("......CreateXian.....");
}
}
}

public class Xian1
{
static int i;
public static void main(String[] args)
{
CreateXian x=new CreateXian();
x.start();
for(i=0;i<10;i++)
{
System.out.println("...main......");
}
}
}


运行结果如下:









2.2、实现Runable接口

步骤:2.2.1、定义类实现Runnable接口;

2.2.2、覆盖Runnable接口中的run方法;

2.2.3、通过Thread类建立线程对象;

2.2.4、将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数;

因为,自定义的run方法所属的对象是Runnable接口的子类对象,所以要让线程去执行指定对象run方法,就必须明确run方法所属对象。

2.2.5、调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。

public class RunanbleDemo implements Runnable
{
int i=100;
public  void run()
{

while(true)
{
if(i>0)
{
//try{Thread.sleep(10);}catch(Exception e){}
System.out.println("...."+Thread.currentThread().getName()+"...."+i--);
}
}
}
}
public class Xian1
{
static int i;
public static void main(String[] args)
{
RunanbleDemo t=new RunanbleDemo();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
t1.start();
t2.start();
for(i=0;i<5;i++)
{
System.out.println("...main......"+Thread.currentThread().getName());
}
}
}
运行结果如下:



从结果中可以看出,线程0和线程1交替运行,但是10后直接为8,最后又为9,其实这是错误的,下一篇博文介绍多线程的安全机制。

2.3、实现方式与继承方式区别

实现方式好处:避免了单继承的局限性。在定义线程时,建议使用实现方式。

继承Thread:线程代码存放在Thread子类的run方法中;

实现Runnable:线程代码存放在接口的子类run方法中。

3、获取线程对象及名称

线程都有自己默认的名称:Thread-编号,编号从0开始。

Thread类中的方法:

static Thread currentThread():获取当前线程对象(静态方法,返回值为Thread类型的类,因此其调用格式为Thread.currentThread())。

getName():获取线程名称。

setName:设置线程名称。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: