多线程---纯小白自己声明给自己的---勿喷

来源:互联网 发布:长虹pf21800h数据 编辑:程序博客网 时间:2024/06/06 03:53

线程与进程

1、线程:程序中单独顺序的控制流
线程本身依靠程序进行运行
线程是程序中的顺序控制流,只能使用分配给程序的资源和环境
2、进程:执行中的程序
一个进程可以包含一个或多个线程
一个进程至少要包含一个线程
3、单线程
程序中只存在一个线程,实际上主方法就是一个主线程
4、多线程
多线程是在一个程序中运行多个任务
多线程的目的是更好的使用CPU资源

线程的实现

1、在Java中,线程的实现有两种:
继承Thread类
实现Runnable接口


2、thread类
thread类是在java.lang包中定义的,继承Thread类必须重写run()方法
定义格式:
class className extends Thread(
run(){};
}


3、Runnable接口
MyRunnable r1 = new MyRunnable("A");
MyRunnable r2 = new MyRunnable("B");
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
注:**重写run方法
start方法执行启动
多线程启动,一定是start方法执行,调用run方法是不能完成多线程并发的。


线程的状态

1、线程也有固定的操作状态
创建状态:准备好一个多线程对象(new一个)
就绪状态:调用start()方法,等待CPU进行调度(等待cpu分配资源调度)
运行状态:执行run()方法
阻塞状态:暂时停止执行,可能将资源交给其他线程使用
终止状态(死亡状态):线程销毁

线程的常用方法

1、取得线程名称
getName()
2、取得当前线程对象
currentThread()
3、判断线程是否启动
isAlive()
4、线程的强行运行
join()
5、线程的休眠
sleep()

线程优先级

1、优先级顺序设置
eg:Thread.setPriority(Thread.MIN_PRIORITY)
1-MIN_PRIORITY
10-MAX_PRIORITY
5-NORM_PRIORITY
如果什么都不设置默认是5

线程同步

1、同步代码块
在代码块上加“synchronized”关键字,则此代码块就称为同步代码块

2、同步代码块格式
synchronized(同步对象) {
需要同步的代码块;
}
eg: private int ticket = 5; // 车票总数
public void run(){
for(int i = 0; i <10; i++){
synchronized(this){
if(ticket > 0){
try{
Thread.sleep(500){
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("车票:" + ticket--);
}
}
}
}
实现同步这样最后直到车票没有就不进行继续卖了,解决资源共享问题。

3、同步方法
除了代码块可以同步,方法也是可以同步的

线程的声明周期




原创粉丝点击