您的位置:首页 > 职场人生

黑马程序员_多线程_1

2015-06-24 17:40 399 查看
——- android培训java培训、期待与您交流! ———-

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

线程:进程中一个独立的控制单元,线程控制着进程的执行

一个进程至少有一个线程

两种创建线程的方式:

一、

1、定义类,集成Thread

2、复写run方法,将自定义代码存储在run方法中,让线程运行

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

二、

1、定义类实现Runnable接口

2、覆盖Runnable接口中的run方法,将线程要运行的代码存放在该run方法中

3、通过Thread类建立线程对象

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

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

—————————————————————

实际操作:

//第一种方法

class PrimeThread extends Thread {

long minPrime;

PrimeThread(long minPrime) {

this.minPrime = minPrime;

}

public void run() {
// compute primes larger than minPrime
. . .
}
}


//创建并启动一个线程

PrimeThread p = new PrimeThread(143);

p.start();

//第二种方法

class PrimeRun implements Runnable {

long minPrime;

PrimeRun(long minPrime) {

this.minPrime = minPrime;

}

public void run() {
// compute primes larger than minPrime
. . .
}
}
//创建并启动线程
PrimeRun p = new PrimeRun(143);
new Thread(p).start();


随文附上一份两种方式创建线程的实例代码

//继承类的方式

public class ThreadDemo extends Thread {
//apple初始数量20个
private static int appleNum = 20;
//小孩名,便于打印时候区分
private String childName;
ThreadDemo(String name){
this.childName = name;
}
public void run(){
//两个小孩分别初始食用数量0
int childEat = 0;
while(true){
//开始吃,每次吃一个,appleNum最低不能为0
if(appleNum>0){
childEat++;
appleNum--;
System.out.println(childName+"吃了:"+childEat+"个;还剩:"+appleNum);
}
}

}
}


//实现接口的方式

class ThreadDemo_2 implements Runnable {
//apple初始数量20个
private static int appleNum = 20;
//小孩名,便于打印时候区分
private String childName;
ThreadDemo_2(String name){
this.childName = name;
}
public void run(){
//两个小孩分别初始食用数量0
int childEat = 0;
while(true){
//开始吃,每次吃一个,appleNum最低不能为0
if(appleNum>0){
childEat++;
appleNum--;
System.out.println(childName+"吃了:"+childEat+"个;还剩:"+appleNum);
}
}

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