摘要: 相同,可以让线程处于冻结状态。 不同: 1、wait()可以指定时间,也可以不指定时间。 sleep()必须指定时间。 2、wait()释放CPU资源,同时释放锁; sleep()释放CPU资源,但不释放锁。 问:同步里面是不是只能有一条线程? 是的,但是如果同步里面出现wait()会出现多个情况, 阅读全文
posted @ 2018-01-09 12:18 小菜鸟321 阅读(255) 评论(0) 推荐(0)
摘要: 同步嵌套或者是线程都进入wait。 阅读全文
posted @ 2018-01-09 12:17 小菜鸟321 阅读(114) 评论(0) 推荐(0)
摘要: 操作共享资源,但是线程的任务不一样 wait():该方法让线程进入冻结状态,释放了CPU执行权与执行资格,同时释放了锁,线程被储存在线程池中; notify():唤醒线程池中的任意一个线程; notifyAll():唤醒线程池中的所有线程。 这些方法必须使用在同步当中,因为是用来操作同步锁上的线程的 阅读全文
posted @ 2018-01-09 12:17 小菜鸟321 阅读(192) 评论(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)