通往黑马 —— Java学习笔记(3)


1.包

package关键字

public —— 包与包之间访问

protected —— 访问父类中被protected修饰的成员

默认权限 —— 同一个包中访问

private —— 同一个类中访问


import


2.多线程

1)概念

进程,一个正在执行中的程序。

线程,进程由一个或多个线程控制。 

2)创建线程

A方式——继承thread类

①定义一个类继承Thread类,覆盖run()方法,run()里存储这线程要运行的代码,就相当于主线程里的main();

②创建一个该类对象,创建一个线程;

③调用对象的start()方法,启用这个线程,并调用run()运行;

注:currentThread():获取当前对象;getName():获取线程名称;setName()设置线程名;


B方式——实现Runnable接口

①定义一个类实现Runnable接口,覆盖run()方法;

②建立一个该类对象;

③通过该对象利用Thread类的构造函数Thread(Runnable target)建立线程;

④通过新建的Thread对象的star()启动线程

这种方式比A方式好的地方在于避免单继承的局限性,这种定义线程的方式优于上一种。

3)线程的运行状态

4)线程的安全问题——同步代码块

synchronized(锁){

需要被同步的代码

}

同步代码块的锁可以用任意对象。

synchronized可以直接修饰函数,同步函数和同步代码块效果相同。

静态同步函数的锁,是Class类创建的类对象。

同步函数的锁是this对象。

多线程同步需要同一个锁。

5)死锁:

同步嵌套

6)线程间通信——多个线程用不同的动作操作同一个资源

a)需同步的操作用一个锁;

b)等待唤醒机制——wait() notify() notifyAll()

这些线程操作必须使用在同步中;

等待唤醒操作需用线程监视器调用,只能唤醒监视器标识的线程。

7)Lock接口 Condition接口

用实现了Lock接口的类(例如ReentrantLock类)创建对象,这个对象作为锁,具备以下功能:

lock_target.lock(); 锁定代码

lock_target.unlock(); 解锁代码

lock.newCondition(); 创建Condition对象

通过Condition对象操作同一个锁内的指定线程:

condition_target.await();冻结线程

condition_target.signal();唤醒线程

8)Thread类interrupt()方法——强制解除线程冻结状态。

9)Thread类setDaemon(true)方法——设定为守护线程,后台线程,在前台线程结束后自动结束。

10)Thread类join()方法——当A线程执行到B线程的.join()时,A进入等待,直到B执行结束。

11)yield()方法——暂停线程,释放执行权;

        setPriority()方法——设置优先级,1~10;

注:Thread.currentThread()——获得当前线程对象



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值