1.进程,线程:

所谓进程(process)就是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。

进程中所包含的一个或多个执行单元称为线程(thread)。

一个线程是进程的一个顺序执行流.

2. 并发:

微观上所有进程和线程是走走停停的,宏观上都在运行,这种都运行的现象叫并发,但是不是绝对意义上的“同时发生。

线程调度机制是OS提供的一个用于并发处理的程序。java虚拟机自身也提供了线程调度机制,用于减轻OS切换线程带来的更多负担。

3.创建线程

java.lang.Thread类是线程类;

Thread创建线程:

01.    public class TestThread extends Thread{
02.
03.        public void run() {
04.            for(int i=0;i<10;i++){
05.                System.out.println("我是线程");
06.            }
07.        }
08.    }

启动线程:

    Thread thread = new TestThread();//实例化线程 
    thread.start();//启动线程

匿名类方式创建线程 :

Thread thread  = new Thread(){    //匿名类方式创建线程 public void run(){//线程体    }};thread.start();//启动线程

4.获取线程信息:

  • long getId():返回该线程的标识符
  • String getName():返回该线程的名称
  • int getPriority():返回线程的优先级
  • Thread.state getState():获取线程的状态
  • boolean isAlive():测试线程是否处于活动状态
  • boolean isDaemon():测试线程是否为守护线程
  • boolean isInterrupted():测试线程是否已经中断
  • public class TestThread {
    02.        public static void main(String[] args) {
    03.            Thread current = Thread.currentThread();
    04.            long id = current.getId();
    05.            String name = current.getName();
    06.            int priority = current.getPriority();
    07.            Thread.State state = current.getState();
    08.            boolean isAlive = current.isAlive();
    09.            boolean isDaemon = current.isDaemon();
    10.            boolean isInterrupt = current.isInterrupted();
    11.            System.out.println("id:"+id);
    12.            System.out.println("name:"+name);
    13.            System.out.println("priority:"+priority);
    14.            System.out.println("state:"+state);
    15.            System.out.println("isAlive:"+isAlive);
    16.            System.out.println("isDaemon:"+isDaemon);
    17.            System.out.println("isInterrupt:"+isInterrupt);
    18.        }
    19.    }
    

    5.线程优先级:

    Thread.MIN_PRIORITY //最低1

    Thread.MAX_PRIORITY //最高10

    Thread.NORM_PRIORITY //默认5

    6.守护线程

    守护线程与普通线程在表现上没有什么区别;

    守护线程的特点是,当进程中只剩下守护线程时,所有守护线程强制终止。

    7.Thread的静态方法sleep用于使当前线程进入阻塞状态:

    8.锁机制:

    Java提供了一种内置的锁机制来支持原子性:

    同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块。

    ①静态方法锁:

    01.   public synchronized static void xxx(){
    02.        ….
    03.    }
    

    9.线程安全API/非线程安全API

    非线程安全:
                        StringBuilder; ArrayList; LinkedList ;HashSet; HashMap 
              线程安全:
                        StringBuffer; Vector;Hashtable;

    10.线程池:

    主要作用:①控制线程数量  ②重用线程
    

Java.SE01.多线程相关推荐

  1. Java.SE01.多线程_案例01

     1.有效的缩小同步范围可以再保证并发安全的前提下提高并发效率,同步块可以更精确的锁定需要同步执行的代码片段. 举个生活例子: 买衣服可以简化为三个步骤:①挑选衣服②试衣服③结账. 在同一家店中多 ...

  2. Oracle字符串转BooIean,利用Java的多线程技术实现数据库的访问.pdf

    利用Java的多线程技术实现数据库的访问.pdf 第 卷第 期 计算机应用 22 12 Voi .22 , No . 12 年 月 2002 12 Computer Appiications Dec ...

  3. Java 并发/多线程教程(四)-并发模型

    本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 并发系统可以有多 ...

  4. LeetCode1117. Building H2O --Java解法--多线程保证执行顺序--AtomicInteger

    此文首发于我的个人博客:LeetCode 1117. Building H2O --Java解法–多线程保证执行顺序–AtomicInteger - zhang0peter的个人博客 LeetCode ...

  5. Java 并发/多线程教程(五)-相同线程

    本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 相同线程是一并发框架模型,是一个单线程系统向外扩展成多个单线程的系统.这样的结果就是 ...

  6. java 创建多线程_Java创建多线程

    Java创建多线程 下一节> 到目前为止,我们仅用到两个线程:主线程和一个子线程.然而,你的程序可以创建所需的更多线程.例如,下面的程序创建了三个子线程: // Create multiple ...

  7. Java接口多线程并发测试 (一)

    本文为作者原创,禁止转载,违者必究法律责任!!! 本文为作者原创,禁止转载,违者必究法律责任!!! Java接口多线程并发测试 一,首先写一个接口post 请求代码: import org.apach ...

  8. Java的多线程和线程池的使用,你真的清楚了吗?

    Java的多线程和线程池的使用 多线程大大提高程序运行效率,我们在开发过程中经常会开启一个线程来执行一些费时的任务.开启一个线程有4种方式,在下面的文章我将详细的去讲解. 继承Thread 继承Thr ...

  9. 《Java程序设计》实验报告——Java的多线程机制

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

最新文章

  1. python numpy.mean() axis参数使用方法【sum(axis=*)是求和,mean(axis=*)是求平均值】
  2. 亚马逊记AWS(Amazon Web Services)自由EC2应用
  3. Xcode8.0 删除插件路径
  4. java jdbc修改_java----jdbc(数据库的添加,删除,修改,更新)
  5. HTML实体字符转化为HTML标签
  6. 【R】语言第一课-----安装
  7. LPTSTR、LPCSTR、LPCTSTR、LPSTR的区别
  8. 单自由度振动全解:matlab理论计算 virtual.lab motion仿真Excite PU仿真
  9. MAPGIS提示请在“系统设置”里设置好系统库路径(SUVSLIB或者其他)再重新运行程序
  10. linux c蜂鸣器驱动程序,〖Linux〗OK6410a蜂鸣器的驱动程序编写全程实录
  11. 【ACM】算法竞赛及OJ题面常用英文单词整理(更新ing)
  12. 海威计算机网络,海威分布式大屏幕显示控制系统的主要优点
  13. F1DC2706双模数据透传蓝牙模块AT指令使用介绍
  14. 迅雷链总工程师来鑫:区块链3.0需解决4大难题
  15. JavaScript智能填写续写版(QQ邮箱地址栏简化版)
  16. 用c# 实现一个爬虫
  17. 【深度学习-机器学习】分类度量指标 : 正确率、召回率、灵敏度、特异度,ROC曲线、AUC等
  18. 中文版扩散模型课程:第一单元
  19. java:数组的静态和动态声明
  20. XML详细入门教程[PDF]

热门文章

  1. 辉涩笔记002—20200518
  2. 第1周学习:深度学习和pytorch基础
  3. idea plugins一直在转圈解决方法
  4. Dota2参议院[贪心与队列]
  5. 获取DGV中选中行,及其行中某列的值
  6. 如何使用Gatsby创建自己的博客
  7. Filter过滤器用法与说明
  8. 开心001超级大亨外挂制作
  9. WINCE6.0刷系统异常
  10. 【飞翔的小鸟】使用C++框架开发飞行小鸟游戏