上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 33 下一页
摘要: 线程同步——解决线程安全问题 第一种方式,同步代码块; 代码实现: 其中,锁对象可以是任意对象,用Object对象是必然ok的,用synchronized关键字, synchronized( 锁对象 ){ 访问共享数据的代码块 } 再运行多线程的主程序: 还是原来的主程序,运行结果: 解决了线程安全 阅读全文
posted @ 2019-04-07 15:35 wmqiang 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 多线程访问共享数据,产生安全问题; 如卖票案列: 线程安全的代码表现: 其中,Thread类的静态方法sleep需要处理异常,throw抛出异常或者try/catch处理异常; while( true )即为死循环; 主程序执行: 其中,父类Thread构造方法入参为同一个Runnable的实现类R 阅读全文
posted @ 2019-04-07 15:18 wmqiang 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 创建多线程的第一种方式——创建Thread子类和重写run方法; 第二种方式——实现Runnable接口,实现类传参给父类Thread类构造方法创建线程; 第一种方式创建Thread子类和重写run方法: 创建线程: 主线程调用新线程,创建多线程: 运行结果是cpu随机执行; 阅读全文
posted @ 2019-04-07 14:59 wmqiang 阅读(1229) 评论(0) 推荐(0) 编辑
摘要: 定义一个普通的类: 引用这个类,执行main方法,main方法就是一个主线程: 线程:进程的执行单元,可以理解为栈内存中的所执行的方法(除了main方法之外都是线程中的run方法)地址开辟通往cpu的一条执行路径; 运行结果: 其中,0作为分母报算术异常; 阅读全文
posted @ 2019-04-07 14:45 wmqiang 阅读(1656) 评论(0) 推荐(0) 编辑
摘要: 进程:内存中运行的应用程序 其中,电脑内存是临时存储,关机就清除了; 线程:进程中的每个执行单元 一个程序运行后至少有一个进程,一个进程可以包含多个线程; 线程的调度: 阅读全文
posted @ 2019-04-07 13:06 wmqiang 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 字不重要,看图。 阅读全文
posted @ 2019-04-07 12:39 wmqiang 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 匿名内部实现多线程的两种方式创建: 使用匿名内部类用第一种方式即继承Thread类重写run方法: 运行结果: 使用匿名内部类用第二种方式即实现Runnable接口调用父类Thread的构造方法开启线程: 其中,new Thread(r).start使用的是匿名对象的方式直接调用start方法开启线 阅读全文
posted @ 2019-04-07 12:34 wmqiang 阅读(979) 评论(0) 推荐(0) 编辑
摘要: 实现Runnable接口创建多线程: 创建一个Runnable接口的实现类RunnableImpl: 主线程中: 其中,链式编程的Thread类的静态方法currentThread方法点getName是获取的是当前线程的名称; 运行结果: 线程抢占cpu资源是随机的,无法人为控制; 实现Runnab 阅读全文
posted @ 2019-04-07 11:59 wmqiang 阅读(1292) 评论(0) 推荐(0) 编辑
摘要: Thread类常用方法 获取当前线程名称的方法: 第一种方法,在线程中使用getName()方法: 执行结果: 其中,根据多线程的内存原理,会开辟包含主线程的四个栈空间出来供cpu四个线程执行,优先级cpu自己选择,认为控制不了,所以可能会先执行Thread-2线程,后执行的Thread-1线程; 阅读全文
posted @ 2019-04-07 11:07 wmqiang 阅读(2010) 评论(0) 推荐(0) 编辑
摘要: main线程即主线程,和调用的两外一个线程(继承Thread类重写run方法实现的一个线程): 程序原理解析: 内存原理解析: 阅读全文
posted @ 2019-04-07 10:25 wmqiang 阅读(144) 评论(0) 推荐(0) 编辑
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 33 下一页