学习笔记:多线程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类型的线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值