线程:代码执行的一个分支
          主要作用是提高了效率,cpu能同时执行多个部分的代码。
      线程的创建:两种方式
      a.继承于thread类,重写run方法。
      b.实现了runable接口,实现run方法。
      
            启动线程必须用线程的start方法;如果直接调用线程的run方法则就是单线程了。
      有一个对象启动两个线程和两个对象启动两个线程的区别:一个对象启动两个线程,两个线程中的修改的内容始终是针对同一个对象的。两个对象启动
      两个线程,线程中修改的内容是针对不同的对象。
      
    Thread类:部分方法
    start()  使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
    getPriority() 返回线程的优先级。
    setPriority(int newPriority)  更改线程的优先级。        
    currentThread()    返回对当前正在执行的线程对象的引用。         
    setName(String name)  改变线程名称,使之与参数 name 相同。       
   
   线程的状态:
    1.新建 :      new一个线程后线程处于新建状态
    2.就绪 :      当一个线程调用了start方法之后 处于就绪状态(注意太调用了此方法并不一定立刻去执行线程的方法)
    3.运行 :      线程在执行的run方法的时候处于运行状态
    4.睡眠 :      线程调用了sleep方法之后处于休息状态(此状态当休息时间到了之后立刻就转为就绪状态)
    5.等待 :      线程调用了wait方法之后处于等待状态。
    6.死亡 :      run方法执行完毕。
   等待状态与睡眠时间状态的区别:
                               睡眠状态是时间到了自然处于就绪状态,只有CPU分配了事件片,立刻就可以继续执行。
                               等待状态是如果没有线程通知的话,等待状态永远醒不过来了.
      
      常用方法:
      a.currentTHread():静态方法。获取当前的线程。
      b.getName():获取线程的名字
      c.setName():设置线程的名字(没有设置则有默认的名字)
      d.sleep():让线程休息一段时间。
      e.join():合并线程,让两个线程合并一个线程。
      f.yeild():当前线程让出cpu,当前线程处于一个就绪状态
      g.setPriority():设置线程的优先级。默认的级别是5.优先级从1~10;
      
      线程的同步: 多个线程同时执行某段代码就会出现线程同步。此时结果不可预料.
          防止线程同步:采用synchronized关键字修饰需要进行同步的代码。
        synchronized的原理:是对资源加一把锁,当一个线程进入此资源执行代码的时候,立刻加锁,其他的线程
        执行处于等待状态。一直到此线程释放锁后,其他线程才能进入此资源执行代码。

学习java线程学习笔记的更多相关文章

  1. 如何学习Java?学习Java顺序?

    Java相对于Asp.Net或Asp.Net MVC来讲,入门是比较困难和烦琐的!它不像.Net哪样有安装开发工具就可以跑程序了,不需要配置复杂的运行环境. 推荐的学习Java的学习顺序如下: 一.J ...

  2. java 线程学习

    转载:详见处http://lavasoft.blog.51cto.com/62575/27069   Java多线程编程总结   下面是Java线程系列博文的一个编目:   Java线程:概念与原理 ...

  3. java线程学习——汉堡销售问题

    汉堡店中有一个负责做汉堡的厨师,一个负责销售的营业员,用java线程表示他们的营业过程: 问题原型就是生产者与消费者的问题. 首先定义一个汉堡包箱子类与几个相关的变量类: public class H ...

  4. Java线程学习详解

    线程基础 1. 线程的生命周期 1.1 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态.它保持这个状态直到程序 start() 这个线程. 1 ...

  5. [Java基础] Java线程复习笔记

    先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java ...

  6. Java线程学习笔记(两) 线程异常处理

    线程捕获异常: 情况下,我们在main()方法里是捕捉不到线程的异常的,比例如以下面代码: public class ExceptionThread implements Runnable{ @Ove ...

  7. Java线程学习笔记(一个)

    一个.正在创建的线程: 老掉牙的话题了.继承 java.lang.Thread父类或者实现Runnalbe接口.这里就提一句: class Thread implements Runnable Thr ...

  8. Java 线程学习笔记

    1.什么是线程 进程: 一个正在运行的程序就叫一个进程. 每个进程都有独立的内存空间. (进程是资源分派的基本单位) 线程: 一个进程中可以有很多线程.----> 常说的多线程 线程没有独立的内 ...

  9. 从使用到原理学习Java线程池

    线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. 所 ...

随机推荐

  1. IP地址分类百科

    IP地址分类介绍 这里讨论IPv4,IP地址分成了A类.B类.C类.C类.E类,如下图所示: 解释: A类以0开头,网络地址有7位,主机地址有24位,举例:A类地址:0 10000000 000000 ...

  2. 1.Smarty的下载安装

    下载地址:https://github.com/smarty-php/smarty/tree/v3.1.29 官网:smarty.net 下载解压后的目录:

  3. laravel如何向视图传递变量的方法

    第一种: public function about(){ $name = "cai" return view("sites.about")->with( ...

  4. 程序员必须知道的六大ES6新特性

    二 .字符串扩展 1.传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6又提供了三种新方法. includes():返回布尔值,表示是否找到了参 ...

  5. Linux之虚拟机网络配置

    一般安装完虚拟机后,VMware会为虚拟机在网络连接配置为“NAT模式(N):用于共享主机的IP地址”. 这种模式下虚拟机会共享主机的网络环境,主机可以访问外网那么虚拟机可以,主机可以(哪怕是拨VPN ...

  6. vijos1027题解

    题目: 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫"最初梦想"的游戏.游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王chines ...

  7. Struts2请求参数合法性校验机制

    在Action中通过代码执行数据校验 请求参数的输入校验途径一般分两种:客户端校验 :通过JavaScript 完成 (jquery validation插件),目的:过滤正常用户的误操作. 服务器校 ...

  8. 虚拟硬盘格式vdi、vhd、vmdk相互转换

    Windows7的引导程序能够引导vhd格式的虚拟硬盘,而VirtualBox创建的虚拟硬盘文件是vdi格式的,怎么办呢? 以前要借助其他软件才能实现,但是VirtualBox早就悄悄为我们带来了一个 ...

  9. Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

    1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...

  10. Postmessage运用-往飞信添加信息

    1.定位窗口 fHwnd:=FindWindow(nil,'短信中心'); then begin showmessage('请先登录飞信2013短信中心'); exit; end; { applica ...