java多线程—线程的基本介绍
来源:互联网 发布:惠州程序员招聘 编辑:程序博客网 时间:2024/05/19 02:02
进程和线程:
进程是程序的一次动态执行过程,经历了从代码的加载、执行到执行完毕的一个完整的过程,这个过程也是进程本身从产生、发展到最终消亡的过程。
多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。
java实现多线程:
·继承Thread类
·实现Runnable接口
继承Thread类:(java.lang)
多线程操作类:继承了Thread类的类,必须明确的覆写Thread类中的run()方法,次方法为线程的主体。
多线程的定义语法:
class 类名称 extends Thread{
属性;
方法;
//覆写Thread类中的run()方法,此方法是线程的主体
public void run(){
线程的主体;
}
}
启动线程:start() 方法-->最终调用的还是run()
查看java.lang.Thread类,找到start()方法:
public synchronized void start() {
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
boolean started = false;
try {
start0();
started = true;
} finally {
try {
if (!started) {
group.threadStartFailed(this);
}
} catch (Throwable ignore) {
}
}
}
private native void start0();
start()会抛出异常
native关键字表示由java调用本机操作系统函数的一个关键字。在java中,运行JAVA程序调用本机的操作系统的函数以完成特定功能。
想要实现多线程操作,需要操作系统的支持,因为多线程会抢占CPU资源,等待CPU调度,这一点需要操作系统的底层支持,所以用native关键字调用本机系统函数。而在不同的操作系统中多线程的实现底层代码肯定是不同的,所以用native关键字让JVM去调整不同的JVM来实现。
Runnable接口:
在java中也可以通过实现Runnable接口的方式实现多线程,Runnable接口中只定义了一个抽象方法:
public void run();
通过Runnable接口实现多线程:
class类名称 implements Runnable{
属性;
方法;
public void run(){
线程主体;
}
}
在Runnable接口中没有sttart()方法,可以通过实例化Thread类对象实现:
class MyThread implements Runnable
{
private String name; //定义线程名称
public MyThread(String name){
this.name=name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(name+"运行,i="+i);
}
}
}
public class RunnableDemo
{
public static void main(String args[]){
MyThread mt1 = new MyThread("线程A"); //实例化对象
MyThread mt2 = new MyThread("线程B");
Thread t1 = new Thread(mt1); //实例化Thread类对象
Thread t2 = new Thread(mt2);
t1.start();
t2.start(); //启动多线程
}
}
Thread类与Runnable接口的关系
Thread类定义:
public class Thread
- extends Object
- implements Runnable
- 从以上定义格式可以发现,Thread类也是Runnable接口的子类。
- Thread类与Runnable接口的区别
- 使用Thread类操作多线程,无法达到资源共享
- Runnable接口可以实现资源共享
- 使用Thread类实现:
- class MyThread extends Thread
- {
- private int ticket = 5;//总共5张票
- public void run(){
- for(int i=0;i<100;i++){
- if(this.ticket>0){
- System.out.println("卖票:ticket="+ticket--);
- }
- }
- }
- }
- public class RunnableDemo
- {
- public static void main(String args[]){
- MyThread mt1 = new MyThread();
- MyThread mt2 = new MyThread();
- MyThread mt3 = new MyThread();
- mt1.run();
- mt2.run();
- mt3.run();
- }
- }
- 程序运行结果:
- 3个进程各自卖自己的5张票
- 使用Runnable接口实现
- class MyThread implements Runnable
- {
- private int ticket = 5;//总共5张票
- public void run(){
- for(int i=0;i<100;i++){
- if(this.ticket>0){
- System.out.println("卖票:ticket="+ticket--);
- }
- }
- }
- }
- public class RunnableDemo
- {
- public static void main(String args[]){
- MyThread mt = new MyThread();
- MyThread mt1 = new MyThread();
- new Thread(mt,"售票口一").start();//调用线程主体
- new Thread(mt,"售票口二").start();
- }
- }
- 运行结果:
- 两个串口同事卖5张票。
- 多线程的线程状态:
- 创建状态:准备好了一个多线程对象: Thread t = new Thread()
- 就绪状态:调用了start()方法,等待CPU调用
- 运行状态:执行Run()方法
- 阻塞状态:暂时停止执行,可以将资源交给其他线程使用
- 终止状态:线程执行完毕了,不再使用
0 0
- java多线程—线程的基本介绍
- java多线程(一)----线程基本介绍
- java多线程2——线程的基本应用
- 多线程的基本介绍
- POSIX多线程——基本线程管理函数介绍
- POSIX多线程——基本线程管理函数介绍
- POSIX多线程——基本线程管理函数介绍
- POSIX多线程——基本线程管理函数介绍
- 线程的基本介绍
- 线程的基本介绍
- Java线程(1)--多线程介绍
- java多线程系列----------- 基本的线程机制(一)
- java多线程系列----------- 基本的线程机制(二)
- java 线程3 多线程的基本工作原理
- Java中的多线程(一)关于线程的基本操作
- [Java多线程 二]---线程的状态与基本操作
- [Java多线程 一]---线程的概念与基本性质
- [Java多线程 一]---线程的概念与基本性质
- JAVA学习笔记3——JDK7.0新特性+变量+运算符
- Chrome控制台 如何调试Javascript
- 一、Ubuntu14.04下安装Hadoop2.4.0 (单机模式)
- ubuntu 格式化u盘
- mp3 文件格式介绍【转载】
- java多线程—线程的基本介绍
- 黑马程序员_IO流中的BufferedReader类和BufferedWriter类
- matlab的rand()函数产生均匀分布函数的正确用法
- Chrome 控制台console的用法
- Sicily 4422. Boat Game
- 浏览器功能IDEA开发
- C# 委托
- 【机器学习基础】将回归模型用于分类问题
- 38-UI基础常见问题(UIButton和UIImage区别,UIImage两种加载方式区别,frame,bounds,center作用和区别)