摘要:
内部类:定义在类中的类,称为内部类。 好处是可以直接访问到外部类中的成员。 外部类要访问内部类则必须创建内部类对象,通过内部类对象调用。 内部类直接访问外部类的原理:因为内部类持有了外部类的引用。外部类名.this,还是对象调用。 如果把内部类定义在成员位置上,它就可以被成员修饰符所修饰。 内部类的 阅读全文
posted @ 2018-01-09 17:50
小菜鸟321
阅读(125)
评论(0)
推荐(0)
摘要:
线程优先级从0-10,一般常用三个值表示0(最低) ,5(默认),10(最高),线程的优先级并不是表示优先级高的线程会先执行,低的后执行,而是表示CPU切换到该线程的几率会增加。 阅读全文
posted @ 2018-01-09 17:26
小菜鸟321
阅读(394)
评论(0)
推荐(0)
摘要:
Join() 方法,它能够使调用该方法的线程在此之前执行完毕。 线程的join()方法:t.join()方法一旦调用,执行t.join()这段代码的线程立即阻塞,开始执行t线程。等t线程执行完毕之后,该block住线程才开始执行。 理解清楚了,就是等待它结束,不然不给继续运行下去。 阅读全文
posted @ 2018-01-09 17:08
小菜鸟321
阅读(198)
评论(0)
推荐(0)
摘要:
原理:让run()方法结束。 线程任务通常都有循环,因为开启线程就是为了执行需要一些时间的代码。 只要控制了循环,就可以结束run方法,从而停止线程。 控制循环定义一个标记即可。 阅读全文
posted @ 2018-01-09 14:50
小菜鸟321
阅读(119)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2018-01-09 12:57
小菜鸟321
阅读(85)
评论(0)
推荐(0)
摘要:
package ProConDemo; //创建资源 public class Goods { private String name; //计数器 private int count = 1; //创建一个标记 private boolean flag; //创建资源的生产行为 public sy 阅读全文
posted @ 2018-01-09 12:32
小菜鸟321
阅读(134)
评论(0)
推荐(0)
摘要:
Lock接口的出现比synchronzied有更多操作。 lock();获取锁 unlock();释放锁 同步函数与同步代码块对锁的操作是隐式的。 而lock接口,则将所单独封装成了对象,并提供了对锁的显式操作。 lock接口就是同步的替代 Condition接口替代了Object中的监视器方法 之 阅读全文
posted @ 2018-01-09 12:20
小菜鸟321
阅读(173)
评论(0)
推荐(0)
摘要:
问题1:重复生产,重复消费 原因:被唤醒的线程没有判断标记就进行了生产或者消费,导致重复的生产与消费。 解决办法:就是被唤醒的线程必须先判断,while循环可以让被唤醒的线程再次进行标记判断。 问题2:唤醒以后出现了死锁 原因:本方线程使用notify()时有可能唤醒本方线程,本方线程循环判断标记之 阅读全文
posted @ 2018-01-09 12:19
小菜鸟321
阅读(131)
评论(0)
推荐(0)
摘要:
相同,可以让线程处于冻结状态。 不同: 1、wait()可以指定时间,也可以不指定时间。 sleep()必须指定时间。 2、wait()释放CPU资源,同时释放锁; sleep()释放CPU资源,但不释放锁。 问:同步里面是不是只能有一条线程? 是的,但是如果同步里面出现wait()会出现多个情况, 阅读全文
posted @ 2018-01-09 12:18
小菜鸟321
阅读(255)
评论(0)
推荐(0)
摘要:
操作共享资源,但是线程的任务不一样 wait():该方法让线程进入冻结状态,释放了CPU执行权与执行资格,同时释放了锁,线程被储存在线程池中; notify():唤醒线程池中的任意一个线程; notifyAll():唤醒线程池中的所有线程。 这些方法必须使用在同步当中,因为是用来操作同步锁上的线程的 阅读全文
posted @ 2018-01-09 12:17
小菜鸟321
阅读(192)
评论(0)
推荐(0)
摘要:
同步嵌套或者是线程都进入wait。 阅读全文
posted @ 2018-01-09 12:17
小菜鸟321
阅读(114)
评论(0)
推荐(0)
摘要:
同步函数使用的锁只有this 而同步代码块使用的锁可以是任意对象。 如果一个类中只需要一个锁,那么建议使用同步函数,使用this,写法简单。 但是,一个类中有多个锁,或者多个类中使用同一个锁,那么只能使用同步代码块。 建议使用同步代码块。 阅读全文
posted @ 2018-01-09 12:16
小菜鸟321
阅读(253)
评论(0)
推荐(0)
摘要:
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据 线程安全问题产生的原因 1、线程任务中 阅读全文
posted @ 2018-01-09 12:15
小菜鸟321
阅读(1828)
评论(0)
推荐(0)
摘要:
start()是启动线程对象,让被启动的线程执行run()中的任务代码; 直接调用run()并没有启动线程,执行run()的只有main线程。 当main方法执行到start时,是在栈内存中开辟出一个新的线程栈区。调用几次 就在栈内存中开辟几个线程栈区。 阅读全文
posted @ 2018-01-09 12:14
小菜鸟321
阅读(1373)
评论(0)
推荐(0)
摘要:
1、避免了继承Thread类而出现Java语言单继承的局限性; 2、将线程对象单独进行了封装,符号面向对象的思想; 3、降低了线程对象与线程任务的耦合性; 阅读全文
posted @ 2018-01-09 12:14
小菜鸟321
阅读(418)
评论(0)
推荐(0)
摘要:
线程同步:是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制 异步处理就是,你现在问我问题,我可以不回答你,等我用时间了再处理你这个问题.同步不就反之了,同步信息被立即处理 -- 直到信息处理完成才返回消息句柄;异步信息收 阅读全文
posted @ 2018-01-09 12:14
小菜鸟321
阅读(18899)
评论(0)
推荐(0)
摘要:
//将线程任务实现Runnable接口 (class a implements runnable{ run(){ system.out.println("线程任务"); } } //将实现Runnable接口的类的对象作为参数传递给线程对象 class b{ public static void m 阅读全文
posted @ 2018-01-09 12:12
小菜鸟321
阅读(834)
评论(0)
推荐(0)