JAVA多线程

是资源(内存)的载体也是线程的载体

线程有互斥和同步

JAVA多线程常用方法

1.JAVA对线程的支持

java.lang(class thread and interface runnable 还有 run方法很重要)

2.线程的创建和启动

创建 thread()

启动(void star)线程休眠static void sleep(long millis)使其他线程等待当前线程终止 static void yield()当前运行线程释放处理器资源 

获取线程引用 static thread currentthread()返回当前运行的线程引用

3.线程常用方法

4.如何停止线程 

thread actor=new actor();

boolean keeprunning=true;//可以用在while方法中控制线程运行次数

class为外部类只能有一个

volatile保证了线程可以正确的读取其他线程写入的值

stage run()

关键先生keypersonthread()

join方法可以中途插入线程,停止所有方法,等待这个线程完毕

使用stop停止线程是错误的方法

sleep中斷线程会出现异常,进入阻塞状态,此时再用interrupt将中断状态设置为true,sleep检测到中断标志位true此时中断标志转换为false,此时interupt就不会终止,如果使用interupt会终止停止标志,主线程会继续运行

线程1由于sleep、join等方法进入阻塞状态,其他线程(主线程)运行中调用线程1的interrupt方法,使得线程1的中断标志位置为true,此时线程1的sleep或join等方法检测到其中断标志位为true,抛出中断异常停止阻塞状态清空中断标志即置为false,因此,无法停止线程。

synchronized关键字的作用是对一个对象或者是方法(其实还是持有这个方法的对象)加上锁,加锁实质上是取得对象的访问权限,如果对象已经被其他者所加锁,那么请求者就只好进入等待队列(休眠),知道被其他线程使用nodify方法唤醒。在被加锁的代码块当中,可能会出现一些情况,使得代码需要一些条件才能继续运行,此时为了让这个代码块能够被其他的线程执行到,必须释放锁,nodify方法除了唤醒其他的线程,并把锁交给它之外还有释放锁+让自己休眠的作用。

synchronuzed()锁定线程,让线程只被一个方法使用,nodifyall可以唤醒其他线程。

wait.set()方法可以指定若干个方法随机为下一个线程上锁

创建线程有两种方式:继承Thread类和Runnable接口;继承Runnable接口是将Runnaleb作为参数传入Thread中来创建线程;用户可以通过重写run方法来规定线程来做哪些事情,即任务;因为多个线程争抢cpu资源,可能会造成数据的破坏,因此可通过线程锁即synchronized(中文意思:同步的)关键字配合wait方法来过滤掉不满足条件的线程,使这些线程保持休眠状态知道被重新唤醒,而满足条件的线程继续执行,执行完毕后,通过notify()/notifyAll()方法唤醒处于睡眠状态的线程,重新竞争资源,然后再次通过线程锁重新筛选,循环往复

什么是死锁

多线程常用的交互模型

producer-consumer

java5中并发编程工具 java,util.concurrent

推荐读书 core java java concurrency in practice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值