Actor.java:
public class Actor extends Thread {
@Override
public void run() {
super.run();
System.out.println(getName()+"是一个演员!");
int count = 0;
System.out.println(getName()+"登台演出了"+ (++count) +"次!");
System.out.println(getName()+"演出结束!");
}
public static void main(String[] args) {
Thread actor = new Actor();
actor.setName("Gwoniu");
actor.start();
}
}
隋唐演义:
1、Java对线程的支持
2、线程的创建和启动
3、线程的常用方法
4、如何停止线程
线程->进程
线程:
1、互斥
2、同步
由于java是单继承的语言,所以在已经继承了其他类又想同时实现线程操作的时候就可以实现runable接口。如下代码所示,实现了runable接口的类(runner1是这个类的实例)在开启新线程的时候还是需要thread来辅助的
Thread thread1 = new Thread(runner1);
thread1.start();
线程常用方法
Thread
死锁-------
Thread常用方法
Thread的常用方法
Thread常用方法
线程常用方法
thread 类
runnable接口
lang包
run方法
stop方法已经不再使用,通过设置退出旗标进行线程的停止
Concurrent
Locks & Condition
Java Memory Mode
互斥与同步
synchronized
java线程中start和run方法的区别
Start:
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
Run:
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。
总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。
在同一时间,同一处理器或同一个核只能运行一条线程,当一条线程休眠之后,另一条线程才获得了我们处理器的时间
2.Runnable接口之中没有getName方法,我们可以使用Thread的静态方法currentThreat().getName()获取该对象的名字。
3.若实现接口通过Thread.currentThread().getName()方法获取当前线程名称,继承Thread则getName()方法获取当前线程名称
继承Thread和实现Runnable其区别主要在于共享数据,Runnable接口是可以共享数据的,多个Thread可以同时加载一个Runnable,当各自Thread获得CPU时间片的时候开始运行Runnable,Runnable里面的资源被共享。
不管是继承Thread还是实现Runnable接口我们都可以创建线程。在实际开发中大多数情况下是实现Runnable接口的,因为它可以共享数据。
资源竞争.
资源竞争.
valatile 解决字段可见性
Java线程停止错误的方法 -- stop
使用这个种退出方法不会戛然而止,而是等你把手头的工作做完再结束
join方法不就是中断吗
好书 推荐
6666666666
5555555555555
4444444444444