黑马程序员_多线程_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;
}
//创建并启动一个线程
PrimeThread p = new PrimeThread(143);
p.start();
//第二种方法
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
随文附上一份两种方式创建线程的实例代码
//继承类的方式
//实现接口的方式
进程:一个正在执行的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径或者控制单元
线程:进程中一个独立的控制单元,线程控制着进程的执行
一个进程至少有一个线程
两种创建线程的方式:
一、
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); } } } }
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- 开发人员、程序员与计算机科学家三者之间的区别
- 程序员必备,程序员四大忌
- 程序员们,做好你手里的俩份试卷
- C#实现多线程的同步方法实例分析
- 程序员必备的10大健康装备! 我们要工作更要健康!
- 一篇关于程序员性格的文章第1/3页
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- 8种类型极品程序员,不知你属于哪一种?
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- C#控制台下测试多线程的方法
- Ruby 多线程的潜力和弱点分析
- 程序员编程从初级到中级的10个秘诀
- 做一个优秀程序员应该知道的15件事