黑马程序员_java中的多线程2
来源:互联网 发布:陆维开料软件 编辑:程序博客网 时间:2024/05/23 19:03
------- android培训、java培训、期待与您交流! ----------
一.java多线程编写方法
方法二:
1.编写Runnable接口实现类,并覆盖Runnable接口中的run()方法。run()方法体中放置线程执行代码。
2.创建实现类的对象。
3.调用Thread类的构造函数,创建Thread类的对象即多线程对象。(调用Thread类的构造函数时,要将Runnable接口实现类对象作为参数传递给构造函数。如果创建多个线程对象时,传递的是同一个Runnable接口实现类对象,那么多个线程就共享了这个Runnable接口实现类对象)
4.调用Thread类对象的start()方法开启线程(该方法一执行,程序就会增加一条执行路径)。注:开启线程不代表线程执行代码会立即被执行,只有等线程获得计算机资源后,线程代码在会被执行。
示例代码:
//1.编写Runable接口实现类
class Demo implements Runnable{
//定义一个私有的成员变量
private int tick = 100;
//覆盖Runnable接口中的run()方法
public void run(){
//编写多线程的执行代码
while(true){
if(tick>0){
//Thread.currentThread().getName()——获得当前运行的线程对象的名字。
System.out.println(Thread.currentThread().getName()+"剩余票数"+tick--);
}
}
}
}
//编写测试类。
public class Test(){
public static void main (String[] args){
//2.创建实现类对象
Demo d= new Demo();
//3.调用Thread类的构造函数,创建Thread类的对象(即线程对象)。将实现类对象传递给不同线程对象。使不同线程共享同一个数据。
Thread t1 = new Thread(d);
Thread t2 = new Thread(d);
Thread t3 = new Thread(d);
//4.调用Thread类的对象t 的start()方法开启线程
t1.start();
t2.start();
t3.start();
}
}
方法一与方法二的区别:
方法一:使用Thread类的子类创建线程对象。线程执行代码位于Thread类的子类run()方法中
方法二:使用Thread类创建线程对象,在创建对象时,可向构造函数中传递同一个数据,实现不同线程间的数据共享。线程执行代码位于Runable接口实现类的run()方法中。
二.线程的五种常见状态
1.线程被创建。--------调用线程类(Thread的子类)的构造函数,创建线程对象。
2.准备状态。----------调用线程对象的start()方法,开启线程。多个线程间相互争夺获取计算机资源。
3.运行状态。----------线程争夺获取了计算机资源后,线程对象的run()方法中的代码被执行,线程处于运行状态。
4.线程休息状态。----------调用线程对象的sleep(long millis)方法,使线程处于休息状态。(休息状态下的线程不会争夺获取计算机资源,所以线程对象的run()方法中的代码不会被执行)休息的时间为 mills毫秒。时间过后,线程会自动转换为准备状态。
-----------调用线程对象的wait()方法,也能使线程处于休息状态。但是线程不会自动转换为准备状态,要使用线程对象的notify()方法来转换。
5.线程被结束。----------调用对象的stop()方法结束线程,该方法已经过时,不建议使用。
----------当run()方法中的代码执行完后线程会自动结束。
- 黑马程序员_java中的多线程2
- 黑马程序员_java中的多线程
- 黑马程序员_java中的多线程
- 黑马程序员_JAVA中的多线程
- 黑马程序员_java 多线程(2)
- 黑马程序员_java多线程(2)
- 黑马程序员_java中的多线程1
- 黑马程序员_java中的多线程3
- 黑马程序员_java中的多线程4
- 黑马程序员_java中的多线程5
- 黑马程序员_java中的多线程6
- 黑马程序员_JAVA学习日记_JAVA中的多线程补充
- 黑马程序员_java多线程
- 黑马程序员_JAVA多线程
- 黑马程序员_java多线程
- 黑马程序员_java多线程
- 黑马程序员_java多线程
- 黑马程序员_Java 多线程
- C#读写文件总结
- VC2008发布程序时指定库版本
- TCP/IP模型---数据链路层简介
- SAP HANA学习目录
- Eclipse调试Java程序
- 黑马程序员_java中的多线程2
- vim插件使用简介
- Android 把视图转换为图片,截取屏幕
- 随机事件学习笔记
- 关于函数strtok和strtok_r的使用要点和实现原理(一)
- 数据库事务、隔离级别及锁
- 关于魔兽改键。。。类似11的
- 学生管理系统 宏 出错 名字查找很诡异 scanf() getchar() 用法
- 基于STK的星地光通信链路仿真