学习笔记:多线程Thread和Runnable

同步:排队执行,效率低但安全

异步:同时执行,效率高但数据不安全

线程阻塞:所有耗时操作

Thread :

new Thread (Runnable target,String name);        //参数:任务,线程名称

线程类,继承Thread 类 重写 run(),通过start()方法启动。

每个线程都有自己的栈空间,共用一份堆内存。

优点:简单方便,可以匿名内部类

方法:

void start()        使该线程开始执行;Java 虚拟机调用该线程的 run 方法。

void run()        如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。

final void setName(String name)        改变线程名称

String getName()        获取线程名称

final void setPriority(int priority)        更改线程的优先级。

 final void setDaemon(boolean on)        将该线程标记为守护线程或用户线程

static void sleep(long millisec)        在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)

static Thread currentThread()        返回对当前正在执行的线程对象(的引用)。

线程的中断:

线程.interrupt();        //添加线程中断标记

try { sleep、wait } catch(InterruptedException e){ return;}

守护线程和用户线程:

t1.setDaemon(true);        //t1设置为守护线程,主线程死它也死

ti.start();

runnable:

任务类,实现Runnable接口,重写run()方法. (Thread 的start方法也是调用这个run启动的)

创建任务对象,作为Thread对象的参数(任务交给线程执行)

优点:

1、通过创建任务,然后给线程分配的方式来实现的多线程,适合多个线程同时执行相同任务

2、Runnable是接口,避免单继承

3、任务与线程分开,提高了程序的健壮性

4、线程池技术只接受Runnable类型任务,不接收Thread类型的线程


版权声明:本文为yipfang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。