多线程

来源:互联网 发布:ct重建算法 编辑:程序博客网 时间:2024/06/16 10:55

1.添加classpath路径(类路径)
2.把要添加的到项目jar包下”lib”下
3.添加build path:右键单击jar—->build path—>add to build path

Day13:
多线程:
进程;正在运行的程序(相对独立)
线程:一个进程中的(小功能/小任务)执行单元;

程序运行的原理:
一个瞬间,一个CPU只能执行一个进程中一个线程,但是CPU会在不同的线程之间快速的切换快到让人类感觉他们是同时在运行.
分时调度
抢占式调度

主线程程序
就是main方法所在的线程,就是主线程.

每一个线程都是CPU的执行路径.

Thread类
就代表java中的线程
第一种创建并启动线程的方式(继承方式):
1.定义一个类继承Thread

2子类重写run方法(run方法里面就是任务代码)

3.创建子类对象(创建一个新的线程)

4.启动子类的对象(开启新的线程)

对象.Start()//开始了线程,自动去执行线程中的任务(run方法)

每一个线程都有自己的栈

获取线程的名字:
String 线程对象.getName();默认的叫Thread-0,1,2,3
设置名字:
SetName();
获取主线程的名字不能使用getName(),因为主线程所在的类没有继承Thread
Thread.currentThread();//获取当前线程对象.指的是在哪一个线程中执行获取的就是哪一个线程对象
Thread.currentThread.getName();

启动创建线程的第二种方式:
好处:
可以实现多继承,更灵活

1.定义一个类.实现Runable接口
2.重写run()方法(run里面的任务代码)
3.创建实现类的对象’

4.创建Thread对象并把刚刚创建的实现类对象传入

5.开启线程

使用匿名内部类开启线程:
快速创建一个类的子类对象,或者一个接口的实现类对象

Thread.Sleep(毫秒值)//让程序停一会,再执行

线程安全:
什么时候会出现线程的安全问题:
多个线程,执行相同的任务,操作同一个数据

解决线程安全问题的方法一:
同步代码块;
synchonized(锁对象)
{

}
解决线程安全问题的方法二:
同步方法
public synchonized//同步方法,也有同步锁,用了当前对象(this)

解决线程安全问题的方法三:
Lock()接口:
我们使用的是实现对象:
主要使用两个方法;
创建锁对象
1.lock:获取锁

2 unlock释放锁

New
newThread();
new Thread子类();
阻塞
||
||
新建—start—运行—消亡

原创粉丝点击