java--线程与进程

进程:一个正在运行的程序
线程:一个进程中有多个线程,每一个线程就相当于一个执行的任务

一.线程

1.标准的单线程程序
特点:程序由上至下依次执行,且一个执行完,才会执行下一个
有点:数据绝对安全
弊端:效率不高

2.线程是如何执行的:
开启一个线程,相当于开启了一个cpu的 执行路径(相对独立的),cpu在执行多个线程时,是随机的,和线程的优先级有关
分时调度:cpu会在多个线程 进行随机切换

3.主线程
多线程的程序 除了主线程以外 一般都叫子线程,一个程序只有一个主线程.
主线程(叫main的线程)是如何执行的?
JVM调用main函数-->cpu就给叫main的函数开辟了执行路径-->相当于在这个执行路径中,执行main函数的代码

 Thread线程(开辟一个主线程以外的子线程)
 1.创建一个Thread类的子类
 2.重写run方法
    run方就是你要线程执行的代码
 3.调用start方法,开启线程(不能重复开启)

获取当前线程名字的方法
Thread.currentThread().getName()

创建线程类
class MyThread extends Thread{
//定义自己的name属性(尽量避免重名)
private String name;
public MyThread(){
}
//有参构造方法
//1.给父类的name属性赋值
//2.给本类的name属性赋值
public MyThread(String name,String myname){
	super(name);
	this.name = myname;
}
//父类中使用final修饰的该方法 不能被重写
//可以修改一下方法名,重新提供set/get方法
public void setMyName(String name) {
	this.name = name;
	}
	public String getMyName(){
	return this.name;
	}
	@Override
	public void run() {
	}
}


线程的创建方式

1.用Thread子类的方法
Thread thread = new Thread() {
@Override
public void run() {
System.out.println("子线程执行的方法");
	}
};
thread.start();
2.接口实现类的方法 runnable
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("子线程方法");
	}
};
Thread thread2 = new Thread(runnable);
thread.start();
3.方式2两步一起写
Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("子线程方法");
  }
});

二.线程的6种状态

1.新建状态(new thread)
2.运行状态(start())
3.死亡状态(run方法运行完毕)
4.受阻塞状态(CPU未执行该线程时)
5.休眠状态(sleep方法 休眠时间过了 恢复)
6.等待转态(wait notify)



猜你喜欢

转载自blog.csdn.net/hehanhh/article/details/80571756