瓜牛呱呱的博客

最美的不是下雨天,是曾与你躲过雨的屋檐

Java多线程知识点总结——进阶篇(十二) 之 Join方法 & 优先级 & yield方法

join方法 方法说明:等待该线程终止。 通俗来说就是 当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。 样例代码如下: class Demo implements Runnable { public synchronized void ...

2018-03-31 23:46:31

阅读数:43

评论数:0

Java多线程知识点总结——进阶篇(十一) 之 守护线程(后台运行)

如果你想让你的线程在后台运行,那么你可以调用: Thread.setDaemon(true); 但是有一点需要注意的: 如果你设置你的线程后守护线程,那么如果主线程执行完了,那么后台程序也会跟着退出! 样例代码如下: class DaemonThread implements R...

2018-03-31 21:29:34

阅读数:33

评论数:0

Java多线程知识点总结——进阶篇(十) 之 中断线程

在停止线程运行时有一种特殊情况,就是当线程处于了冻结状态时,就不会读取到while循环的标记,那么线程就不会结束。 如下代码:class StopThread implements Runnable { private boolean flag =true; public syn...

2018-03-31 21:20:12

阅读数:31

评论数:0

Java多线程知识点总结——进阶篇(九) 之 停止线程

如何停止线程? 只有一种,run方法结束。 开启多线程运行,运行代码通常是循环结构。只要控制住循环,就可以让run方法结束,也就是线程结束。 注意:stop方法已经过时。 实例代码如下: class StopThread implements Runnable {...

2018-03-31 20:32:54

阅读数:37

评论数:0

Java多线程知识点总结——进阶篇(八) 之 等待唤醒机制 Lock 锁升级版

JDK1.5 中提供了多线程升级解决方案。 将同步 Synchronized 替换成现实 Lock 操作。 将Object中的 wait、notify、notifyAll,替换成了Condition 对象。该对象可以对 Lock 锁进行获取。该示例中,实现了本方只唤醒对方操作。 ...

2018-03-31 16:14:12

阅读数:37

评论数:0

Java多线程知识点总结——进阶篇(七) 之 等待唤醒机制

1、线程的通信方式通信: 其实就是多个线程在操作同一个资源,但是操作的动作不同。 2、API介绍 Object.wait():在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 Object.notify():唤醒在此...

2018-03-31 15:47:48

阅读数:21

评论数:0

Java多线程知识点总结——进阶篇(六) 之 死锁

如何理解死锁呢?其实简单的可以理解为:同步中嵌套同步,比如: 线程甲拿着锁A,想要锁B 线程乙拿着锁B,想要锁A 这样两个的线程就卡死了 死锁实例代码: class Ticket implements Runnable { private int tick =...

2018-03-31 13:24:43

阅读数:27

评论数:1

Java多线程知识点总结——进阶篇(五)之多线程下的单例模式

饿汉式 饿汉式多线程和单线程的代码是一样的,如下: class Single { private static final Single s = new Single(); private Single(){} public static Single getInsta...

2018-03-31 13:06:56

阅读数:38

评论数:2

Java多线程知识点总结——进阶篇(四)之静态同步函数用的是哪一个锁问题

如果同步函数被静态修饰后,使用的锁是什么呢? 通过验证,发现不再是this。因为静态方法中也不可以定义this。 静态函数进内存时,内存中还没有本类对象,但是一定有该类对应的字节码文件对象。 类名.class 该对象的类型是Class 结论: 静态的同步...

2018-03-31 11:59:29

阅读数:37

评论数:1

Java多线程知识点总结——进阶篇(三)之同步函数用的是哪一个锁问题

函数需要被对象调用。那么函数都有一个所属对象引用。就是this。 所以同步函数使用的锁是this。 通过该程序进行验证。 使用两个线程来买票。 一个线程在同步代码块中。一个线程在同步函数中。都在执行买票动作。 代码如下: class Ticket implements ...

2018-03-31 11:46:17

阅读数:35

评论数:0

Java多线程知识点总结——进阶篇(二)之判断程序是否有线程安全问题

需求: 银行有一个金库。 有两个储户分别存300员,每次存100,存3次。 目的:该程序是否有安全问题,如果有,如何解决? 看如下代码,思考会出现什么问题: class Bank { private int sum; public void add(...

2018-03-31 11:21:01

阅读数:80

评论数:0

Java多线程知识点总结——进阶篇(一)之卖票程序

在上篇文章中我们留了个小练习题,下面我将会一步一步的解决一些多线程上的基础经典问题,大神请忽略我的自嗨 需求:火车票多个窗口卖票程序。 说明:有四个窗口同时买一个车厢中的100个座位 不多说,直接上代码: class Ticket extends Thread { pr...

2018-03-30 16:32:46

阅读数:27

评论数:0

Java多线程知识点总结——基础篇

1、进程和线程的区别进程: 是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。 线程: 就是进程中的一个独立的控制单元。线程在控制着进程的执行。 关系: 一个进程中至少有一个线程。 经典的例子: QQ程序,整个QQ是一个进程,N多个聊天窗口其实...

2018-03-30 15:15:16

阅读数:31

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭