1. 程序:为完成特定任务而编写的一段指令的集合
2. 进程:是程序的一次执行过程,或是正在运行的一个程序.是一个动态的过程:它有自身的产生,存在和小王的过程-----生 命周期,
3. 线程:进程可以进一步细化为线程,是一个程序内部的一条执行路径,
一个进程可以支持并行多个线程,此时称之为多线程的
3.1 多线程的优点:提高用户体验,提高计算机程序的CPU利用率,
3.2 多线程使用情况:需要同时执行两个或多个任务时
程序需要实现一些需要等待的任务时,如用户输入,文件读写,网络操作等
需要一些后台运行的程序时
如何创建多线程:
start():启动线程,
sleep():让当前调用此方法的线程睡眠之低昂的毫秒数,
run():创建的线程真正要执行的操作
currentThread:获取执行当前代码所在的线程
yield():主动释放CPU
join():线程a中调用了线程b的join()方法,此时线程a阻塞,直到线程b执行完成,a线程继续执行
isAlive():当前线程是否已经执行结束
stop():停止线程
//创建一个类继承与Thread类 class EvenThread extends Thread{ //重写run方法 @Override public void run() { for (int i = 0; i < 100; i++) { if (i%2==0) { System.out.println(i); } } } } public class ThreadTest { public static void main(String[] args) { //创建子类对象 EvenThread e=new EvenThread(); //调用线程的start()启动,只能通过start启动,否则按顺序执行,不再进入线程子类 e.start(); //调用匿名对象创建的线程的启动 t1.start(); //使用匿名对象创建线程 Thread t1=new Thread(){ @Override public void run() { for (int i = 0; i < 100; i++) { if (i%2==0) { System.out.println(i); } } } } }
线程优先级的设置:
如何设置优先级:setPriority():------>例如e1.setPriority(MAX_PRIORITY), MIN_ PRIORITY =1, NORM_ PRIORITY=5, MAX_ PRIORITY =10
如何获取优先级:getPriority()
注意:高优先级的线程会抢占低优先级的线程,但是不意味着高优先级的一定先执行完成
方式二:使用runable接口创建线程:创建runable的实现类,实现该接口,重写run方法
package threadtest; public class Ruanble { public static void main(String[] args) { //创建实现类的对象 Num num=new Num(); //将此对象作为参数传递给Thread类的构造器,创建Thread类的对象 Thread thread =new Thread(num); //调用start()启动创建的Thread对象 thread.start(); thread.setName("线程一"); } } //创建一个类实现Runable接口 class Num implements Runnable{ //重写run方法 @Override public void run() { for (int i = 0; i <100; i++) { if (i%2==0) { System.out.println(Thread.currentThread().getName()+"de素数wei:"+i); } } } }
比较实现Runable 和继承Thread的优劣: 对比后Runable要好于继承Thread
原因:
原文:https://www.cnblogs.com/ylblikestudyJava/p/12374904.html