1.创建线程的方式:

  1. /**
  2. * StudySjms
  3. * <p>
  4. * Created by haozb on 2018/2/28.
  5. */
  6. public class ThreadDemo extends Thread {
  7. /**
  8. * 定义线程的名字
  9. * @param name
  10. */
  11. public ThreadDemo(String name) {
  12. super(name);
  13. }
  14.  
  15. @Override
  16. public void run() {
  17. for (int i = ; i < ; i++) {
  18. System.out.println(this.getName()+":"+i);
  19. }
  20. }
  21.  
  22. public static void main(String[] args) {
  23. for (int i = ; i < ; i++) {
  24. new ThreadDemo("name"+i).start();
  25. }
  26. }
  27. }
  1. /**
  2. * StudySjms
  3. * <p>
  4. * Created by haozb on 2018/2/28.
  5. */
  6. public class ThreadDemo implements Runnable {
  7. @Override
  8. public void run() {
  9. for (int i = ; i < ; i++) {
  10. System.out.println(Thread.currentThread().getName()+":"+i);
  11. }
  12. }
  13.  
  14. public static void main(String[] args) {
  15. /* Runnable demo = new ThreadDemo();
  16. for (int i = 0; i < 3; i++) {
  17. new Thread(demo,""+i).start();
  18. }*/
  19.  
  20. // 也可以直接采用内名内部类方式来创建
  21. final int num = ;
  22. for (int i = ; i < ; i++) {
  23. new Thread(new Runnable() {
  24. @Override
  25. public void run() {
  26. for (int i = ; i < num; i++) {
  27. System.out.println(Thread.currentThread().getName()+":"+i);
  28. }
  29. }
  30. },""+i).start();
  31. }
  32. }
  33. }

Executors其实就是工厂类,用来创建各种的线程池;

  1. import java.util.concurrent.*;
  2.  
  3. /**
  4. * StudySjms
  5. * <p>
  6. * Created by haozb on 2018/2/28.
  7. */
  8. public class ThreadPool {
  9. public static void main(String[] args) {
  10. //ExecutorService pool = Executors.newFixedThreadPool(2);
  11. // 这种是固定线程数的线程池,控制了现场的最大并发量
  12. //ExecutorService pool = Executors.newCachedThreadPool();
  13. // 这种没有长度限制,会自动控制池的大小,如果任务多了,会创建新现场,如果任务少了,会回收线程
  14. //ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);
  15. /*
  16. 这种例子是延迟3秒执行
  17. pool.schedule(new Runnable() {
  18. @Override
  19. public void run() {
  20.  
  21. }
  22. },3,TimeUnit.SECONDS);*/
  23. /*
  24. 这种是延迟1秒 每3秒执行一次
  25. pool.scheduleAtFixedRate(new Runnable() {
  26. @Override
  27. public void run() {
  28.  
  29. }
  30. },1,3,TimeUnit.SECONDS);*/
  31. /*
  32. 相当于单线程执行任务,有顺序
  33. ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
  34. */
  35.  
  36. ExecutorService pool = new ThreadPoolExecutor(,,0L, TimeUnit.MILLISECONDS,new LinkedBlockingDeque<Runnable>());
  37. for (int i = ; i < ; i++) {
  38. final int tmp = i;
  39. Runnable run = new Runnable() {
  40. @Override
  41. public void run() {
  42. long time = (long)(Math.random()*);
  43. System.out.println(Thread.currentThread().getName()+":"+tmp+"sleeping"+time);
  44.  
  45. try {
  46. Thread.sleep(time);
  47. } catch (InterruptedException e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. };
  52. pool.execute(run);
  53. }
  54. pool.shutdown();
  55. }
  56. }

线程的基本控制方法:

Thread.sleep();   使线程睡眠,放弃cpu

join :使一个线程等待另一个线程完事在执行。eg: t1里面,t2.join()   t1暂停执行,立即执t2,t2执行完事之后再去执行t1

  可以有参数,t2.join(10);  表示为t1只等t210毫秒就继续执行了

interrupt():中断线程,有些时候需要在线程执行过程中中断线程。

Java 并发编程实践基础 读书笔记: 第一章 JAVA并发编程实践基础的更多相关文章

  1. 深入Java虚拟机读书笔记第一章Java体系结构介绍

    第1章 Java体系结构介绍 Java技术核心:Java虚拟机 Java:安全(先天防bug的设计.内存).健壮.平台无关.网络无关(底层结构上,对象序列化和RMI为分布式系统中各个部分共享对象提供了 ...

  2. javascript 数据结构和算法读书笔记 > 第一章 javascript的编程环境和模型

    1.变量的声明和初始化 必须使用关键字 var,后跟变量名,后面还可以跟一个赋值表达式. var name; var age = 5; var str = 'hello'; var flg = fal ...

  3. Java核心技术(卷一)读书笔记——第一章(概述)

    1.Java不提供多重继承,通过接口来实现.一个类只能继承一个父类,但是可以同时实现多个接口. 2.Java中的int类型的大小是固定的32位,以避免代码移植时候的不兼容问题.唯一的限制是int类型的 ...

  4. 《Java并发编程实战》读书笔记-第一部分 基础知识小结

    并发技巧清单 可变状态是至关重要的 所有的并发问题都可以归结为如何协调对并发状态的访问.可变状态越少,就越容易确保线程安全性. 尽量将域声明为final类型,除非需要它们是可变的. 不可变对象一定是线 ...

  5. .net架构设计读书笔记--第一章 基础

    第一章 基础 第一节 软件架构与软件架构师  简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...

  6. 《疯狂Java:突破程序员基本功的16课》读书笔记-第一章 数组与内存控制

    很早以前就听过李刚老师的疯狂java系列很不错,所以最近找一本拿来拜读,再此做下读书笔记,促进更好的消化. 使用Java数组之前必须先对数组对象进行初始化.当数组的所有元素都被分配了合适的内存空间,并 ...

  7. 《Java编程思想》读书笔记-第一个Java程序

    积少成多,欢迎大家关注我的微信公众号,共同探讨Java相关技术 今天的重点是:编写源代码.编译.运行.查看成果.除此之外,还需要搭建起与前面学习的知识的联系. 写本文时依据的系统环境是Windows1 ...

  8. 《css3实战》读书笔记 第一章 基于CSS需求而编写的HTML.

    笔记说明 <CSS3实战手册第3版(影印版)>可以消除Web设计工作的痛苦,并且带给你:HTML--重新入门.如果你是HTML新手,你会学到如何以CSS友好的方式进行基本页面构造.若你是H ...

  9. Java 学习笔记 ------第一章 Java平台概论

    本章学习目标: Java版本迁移简介 认识Java SE.Java EE.Java ME 认识JDK规范与操作 了解JVM.JRE与JDK 下载与安装JDK 一.Java版本迁移简介 书上已经表达得非 ...

  10. 《C++ Primer》读书笔记 第一章

    读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...

随机推荐

  1. 无法连接MySQL

    1.错误描述 Error No. 2003 Can't connect to MySQL Server on 'localhost' (10061) 2.错误原因       打开任务管理器,关闭了m ...

  2. Linux显示所有输出域自动缩小到最短三数字单元和显示单元的打印

    Linux显示所有输出域自动缩小到最短三数字单元和显示单元的打印 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -h total used free ...

  3. 芝麻HTTP:Appium的安装

    Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android.iOS等设备完成自动化测试,比如模拟点击.滑动.输入等操作,其官方网站为:http://appiu ...

  4. Keras常见问题及解答

    Keras官方中文版文档 如何引用 Keras? 如何在 GPU 上运行 Keras? 如何在多 GPU 上运行 Keras 模型? "sample", "batch&q ...

  5. 学IT应该看些书?

    第一阶段:<数据结构><数据库><算法><信息系统管理><互联网>第二阶段:<莫生气><佛经><老子>& ...

  6. KMP算法 Next数组详解

    题面 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果你不知道这是什么意思也不要问,去百 ...

  7. HNOI2017 单旋

    题目描述 网址:https://www.luogu.org/problemnew/show/3721 大意: 有一颗单旋Splay(Spaly),以key值为优先度,总共有5个操作. [1] 插入一个 ...

  8. [BZOJ2761] [JLOI2011] 不重复数字 (set)

    Description 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 ...

  9. c#抽取pdf文档标题(4)——机器学习以及决策树

    我的一位同事告诉我,pdf抽取标题,用机器学习可以完美解决问题,抽取的准确率比较高.于是,我看了一些资料,就动起手来,实践了下. 我主要是根据以往历史块的特征生成一个决策树,然后利用这棵决策树,去判断 ...

  10. 牛客小白月赛1 A-简单题

    描述 Etéreo 是个爱学习的好孩子.在年假期间,他依然热情于数学.他最近发现了一个高大上的东西:,他觉得这里的  非常的厉害!然后他又告诉你:,,他会告诉你  和  ,想请你告诉他  的值.当然这 ...