目录
线程——执行代码的基本单位
线程可以说是机器,就是执行代码。java中的代码都是通过线程为基本单位来执行。
编写源代码————编写源文件——没有语法错误——生成class文件
1.java线程和cd机
class文件————CD碟片
Java线程-————CD机中的激光头
Java平台-————CD机
2.从CD机的工作机制来看java线程
线程是执行java程序代码的基本单位
java线程是java平台的一部分
java线程是运行在java平台内部的,java平台负责管理java线程
java线程执行程序代码时,java平台为其提供各种所需条件
当线程执行完给它的方法后,就会退出。java平台如果没有正在运行的线程,就代表程序执行完毕,java平台就自动退出。
package com.javaeasy.execution;
public class Execution {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i =3+5;
System.out.println(i);
}
}
首先java平台会启动,去创建一个线程。然后java平台会读取它的参数。也就是com.javaeasy.execution.Execution。它的类是全限定名,找到Execution.class文件后,就会把它读取并加载到程序中,然后让开始创建出来的线程去知执行Execution类中的main()方法
java中线程的编程
15.2.1线程类Thread
线程的封装被叫做Thread类
在程序中,当创建一个Thread类的实例,一个真正的线程同时被创建出来。其实使用线程很简单
线程的作用就是执行一个方法,直到方法结束,线程也完成了使命
当创建出线程,也制定线程执行的方法,下面就是让线程启动起来
15.2.2覆盖Thread类的run()方法
1.Thread():这是Thread的一个构造方法,没有任何参数,创建线程实例很简单,可以不用带参数
2.void strat():strat()方法就是启动线程的方法,这个方法就是线程类中最核心的方法。
3.void run():run():方法是Thread类中一个普通的方法,它的特殊住处仅仅在于start()方法会将它作为线程的起点
package com.javaeasy.usethread;
public class MyThread extends Thread{
public void run () { //覆盖Thread类中的run方法
System.out.println("这是在另一个线程中执行的代码");
}
}
上面的类很简单,首先需要注意的是MyThread类击沉Threadlei ,然后覆盖了run方法。这样启动的时候执行可以想到线程执行内容。
package com.javaeasy.usethread;
public class UseMyThread {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread thread =new MyThread();//创建一个Thread类的实例
thread.start();//创建一个新的线程
}
}
Thread类的strat()方法是用来启动第一个线程的
Thread类的run()方法是一个线程启动后执行的方法
15.2.3使用Runnable接口
Thread类中有一个 类型为Runnable的属性,叫做target。而Thread类的run()方法用到了这个属性。
public void run()//Thread类的run()方法
if(target != null){//判断target是否为空
target.run ();//不为空执行run方法
}
}
使用Runnable接口来让线程执行自己编写的run()方法
15.2.4两个线程
package com.javaeasy.usethread;
public class UseMyThread {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread thread =new MyThread();//创建一个Thread类的实例
thread.start();//创建一个新的线程
System.out.println("这是在main方法中执行的代码");
}
}
这是在main方法中执行的代码
这是在另一个线程中执行的代码
java作为平台,会让每个线程运行的时间差不多,线程之间执行代码的时候互补影响