JAVA 多线程知识总结(一)】的更多相关文章

本文是承接上一篇文章:JAVA多线程知识总结(一) 四.Java多线程的阻塞状态与线程控制  上文已经提到线程阻塞的集中具体类型.下面主要看引起JAVA线程阻塞的方法 1,join()-----让一个线程等待另一个线程完成之后才继续执行,如A线程的执行体中调用B线程的join方法,则A线程被阻塞,知道B线程执行完成之后,A才得以继续执行 package com.bpan.spring.beans.thread; public class ThreadTestJoin { public stati…
一,线程的生命周期以及五种基本状态 关于JAVA线程的生命周期,首先看一下下面这张图 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌握了. Java线程具有五中基本状态: 1,新建状态(New):当线程对象创建后就是进入到了新建状态,如:Thread t = new MyThread(); 2,就绪状态(Runnable):当调用线程对象的start()方法,线程即进入到了就绪状态.处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待…
Java中多线程的实现方式 在java的历史版本中,有两种创建多线程程序的方法 1) 通过创建Thread类的子类来实现(Thread类提供了主线程调用其它线程并行运行的机制) 主要步骤: 自定义类继承Thread类,然后覆盖其中的run方法,使得该线程能够完成特定的工作,使用start方法启动线程,将执行权转交到run. 2) 通过实现Runable接口的类来实现(推荐,可以实现数据共享,而且可以避免因为类单继承的局限) 主要步骤: a>. 创建某个类实现Runnable接口,实现run()方…
多线程 1. 多线程基础 多线程状态转换图 普通方法介绍 yeild yeild,线程让步.是当前线程执行完后所有线程又统一回到同一起跑线.让自己或者其他线程运行,并不是单纯的让给其他线程. join 等待线程结束:调用线程等待当前线程结束后才能往下执行,阻塞线程之意.join本质是在当前对象实例上调用线程wait() 如下所示:输出完 thread-1后再输出end public static void main(String[] args) throws InterruptedExcepti…
一.创建线程的三种方式: 创建线程的方式有三种,一是创建Thread实例,二是实现Runnable接口,三是实现Callable接口,Runnable接口和Callable接口的区别是一个无返回值,一个有返回值:不管是Runnable还是Callable接口,都需要借助Thread去运行: (一)继承Thread类: 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. 创建Thread子类的实例,即创建了线程对象. 调…
Callable和Future出现的原因 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦. 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果. Callable和Future介绍 Callable接口代表一段可以调用并返回结果的代码…
1.锁,保证的是被锁的代码,一次执行完毕才能被其他线程执行,锁保证了一个线程执行过程中不被其他线程打断.以保证数据的准确性. 2.数据的读写过程,是有冲突的,当一个线程正在读数据,另一个线程正在写同一个数据,就有可能导致数据不准确,造成脏数据.就要保证读写分开时间段.即加锁. 3.如果想要保证共享对象的一个方法按序执行,则在这个方法上加锁. 4.多个方法加同一个锁:在多个方法上加同一个锁.如果想保证读写能读取到准确数据,则在同一成员变量的对应读写方法上加同一个锁,同一个锁.保证读写正常. 5.同…
线程创建的方式 有两种 第一种是继承Thread类 重写run方法 (个人偏向这一种实际中这种用的较多) 例如 public class MyThead extends Thread { int j=20; public void run(){ for (int i = 0; i < 20; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block…
简述 Java是支持多线程编程的语言,线程相比于进程更加轻量级,线程共享相同的内存空间,但是拥有独立的栈.减少了进程建立.销毁的资源消耗.jdk1.5后对java的多线程编程提供了更完善的支持,使得java的多线程编程更加方便简洁.本文旨在通过对Java多线程知识的梳理,整理出一个大纲,使得读者对多线程的编程有更加完善的认识. 线程生命周期的管理 线程的创建 java中线程的创建主要有两种方式: 继承Thread类(Thread中方法主要用于针对线程本身的处理): 实现Runnable接口: 线…
今天开始陆续将这几天跟进Java多线程知识的成果记录下来分享. Java多线程的知识是一直想要系统彻底的看完的,但是懒惰加无聊早就了我每天都没有进展,这回下决心一定要把这块知识系统梳理完. 我的知识来源于三本“大叔”,<Thinking in Java>.<Effective Java>和<Core Java>,期间还会将涉及的所有相关知识进行梳理,敬请指教.…