学习笔记:多线程Thread和Runnable

本文介绍了同步与异步的概念,同步执行保证数据安全但效率较低,而异步执行则效率高但可能导致数据不安全。线程的创建与管理包括通过Thread类直接创建和通过实现Runnable接口的方式。线程的阻塞操作通常用于耗时任务,而线程的中断通过interrupt()方法实现。此外,还讨论了守护线程和用户线程的区别。对于多线程任务,使用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类型的线程

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值