23天学会JAVA,Java第23天

(5)线程的控制(常见方法)

A:休眠线程

sleep(100)

B:加入线程

join()

C:礼让线程

yiead()

D:后台线程

setDaemon(true)

E:终止线程(掌握)

interrupt()

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

* 当正在运行的线程都是守护线程时,Java 虚拟机退出。 该方法必须在启动线程前调用。

* 游戏:坦克大战。

*

* public final void join():等待该线程终止。

*

* * 我们的线程没有设置优先级,肯定有默认优先级。

* 那么,默认优先级是多少呢?

* 如何获取线程对象的优先级?

* public final int getPriority():返回线程对象的优先级

* 如何设置线程对象的优先级呢?

* public final void setPriority(int newPriority):更改线程的优先级。

*

* 注意:

* 线程默认优先级是5。

* 线程优先级的范围是:1-10。

* 线程优先级高仅仅表示线程获取的 CPU时间片的几率高,但是要在次数比较多,或者多次运行的时候才能看到比较好的效果。

*

* IllegalArgumentException:非法参数异常。

* 抛出的异常表明向方法传递了一个不合法或不正确的参数。

*

* * 线程休眠

*public static void sleep(long millis)

*

** 线程中断

** public final void stop():让线程停止,过时了,但是还可以使用。

* public void interrupt():中断线程。 把线程的状态终止,并抛出一个InterruptedException。

* 线程礼让

* * public static void yield():暂停当前正在执行的线程对象,并执行其他线程。

* 让多个线程的执行更和谐,但是不能靠它保证一人一次。

(6)线程的生命周期(参照“线程生命周期图解.bmp“)

A:新建

B:就绪

C:运行

D:阻塞

E:死亡

(7)电影院买票程序的实现

A:继承Tread类

B:实现Runnable接口

(8)电影院卖票程序出问题

A:为了更符合真实的场景,加入了休眠100毫秒

B:卖票问题

a:同票多次

b:负数票

(9)多线程安全问题的原因(也是我们以后判断一个程序是否有线程安全问题的依据)

A:是否有多线程环境

B:是否有共享数据

C:是否有多条语句操作共享数据

(10)同步解决线程安全问题

A:同步代码块

Synchronized(对象){

需要被同步的代码;

这里的锁对象可以是任意对象~~

B:同步方法

把同步加在方法上

这里的锁对象是this

C:静态同步方法

把同步加在方法上

这里的锁对象是当前类的字节码文件对象(反射再将字节码文件对象)

(11)回顾以前的线程安全的类

A:StringBuffer

B:Vector

C:Hashtable

D:如何把一个线程不安全的集合类变成一个线程安全的集合类

用Collections工具类的方法即可

// Vector是线程安全的时候才去考虑使用的,但是我还说过即使要安全,我也不用你

// 那么到底用谁呢?

// public static List synchronizedList(List list)

List list1 = new ArrayList();// 线程不安全

List list2 = Collections.synchronizedList(new ArrayList()); // 线程安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值