2018年4月24日

实例变量时所导致的线程安全问题

摘要: 当有多个线程共享同一数据时,可能导致数据不一致问题,也就是常见的银行存款取款问题,如果多个线程同时处理某一账户上的钱,则可能导致a取了100,b取了100,而钱只少了100的情况,当然还有更多数据不一致的情况发生。示例代码如下: 运行结果: 由于线程执行的随机性,以及多个线程共享同已数据的特性,导致 阅读全文

posted @ 2018-04-24 21:13 二十年后20 阅读(224) 评论(0) 推荐(0)

调用start()与run()的区别

摘要: 1.调用start()方法: 通知“线程规划器”当前线程已经准备就绪,等待调用线程对象的run()方法。这个过程就是让系统安排一个时间来调用Thread中的run()方法,使线程得到运行,启动线程,具有异步执行的效果。 调用start()方法,也就是线程状态转变成可运行状态的过程。 2.调用run( 阅读全文

posted @ 2018-04-24 20:44 二十年后20 阅读(1552) 评论(0) 推荐(0)

实现多线程的两种方式

摘要: 1.继承Thread类。 源码结构:public class Thread implements Runnable 从中可以看出Thread类实现了Runnable,由于java中不支持多继承,所以实现多线程时,可以采用实现Runnable的方式。 2.实现Runnable接口。 注意一下声明与调用 阅读全文

posted @ 2018-04-24 20:33 二十年后20 阅读(119) 评论(0) 推荐(0)

导航