1.创建线程的方式:

 /**
* StudySjms
* <p>
* Created by haozb on 2018/2/28.
*/
public class ThreadDemo extends Thread {
/**
* 定义线程的名字
* @param name
*/
public ThreadDemo(String name) {
super(name);
} @Override
public void run() {
for (int i = ; i < ; i++) {
System.out.println(this.getName()+":"+i);
}
} public static void main(String[] args) {
for (int i = ; i < ; i++) {
new ThreadDemo("name"+i).start();
}
}
}
 /**
* StudySjms
* <p>
* Created by haozb on 2018/2/28.
*/
public class ThreadDemo implements Runnable {
@Override
public void run() {
for (int i = ; i < ; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
} public static void main(String[] args) {
/* Runnable demo = new ThreadDemo();
for (int i = 0; i < 3; i++) {
new Thread(demo,""+i).start();
}*/ // 也可以直接采用内名内部类方式来创建
final int num = ;
for (int i = ; i < ; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = ; i < num; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
},""+i).start();
}
}
}

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

 import java.util.concurrent.*;

 /**
* StudySjms
* <p>
* Created by haozb on 2018/2/28.
*/
public class ThreadPool {
public static void main(String[] args) {
//ExecutorService pool = Executors.newFixedThreadPool(2);
// 这种是固定线程数的线程池,控制了现场的最大并发量
//ExecutorService pool = Executors.newCachedThreadPool();
// 这种没有长度限制,会自动控制池的大小,如果任务多了,会创建新现场,如果任务少了,会回收线程
//ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);
/*
这种例子是延迟3秒执行
pool.schedule(new Runnable() {
@Override
public void run() { }
},3,TimeUnit.SECONDS);*/
/*
这种是延迟1秒 每3秒执行一次
pool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() { }
},1,3,TimeUnit.SECONDS);*/
/*
相当于单线程执行任务,有顺序
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
*/ ExecutorService pool = new ThreadPoolExecutor(,,0L, TimeUnit.MILLISECONDS,new LinkedBlockingDeque<Runnable>());
for (int i = ; i < ; i++) {
final int tmp = i;
Runnable run = new Runnable() {
@Override
public void run() {
long time = (long)(Math.random()*);
System.out.println(Thread.currentThread().getName()+":"+tmp+"sleeping"+time); try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
pool.execute(run);
}
pool.shutdown();
}
}

线程的基本控制方法:

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. nested exception is java.sql.SQLException: IO 错误

    1.错误描述 (mx.messaging.messages::ErrorMessage)#0 body = (null) clientId = "18CE3B03-9709-9DA8-763 ...

  2. 初识 systemd

    从 init 系统说起 linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化.内核初始化的最后一步就是启动 PID ...

  3. hibernate学习(四)hibernate的一级缓存&快照

    缓存:提高效率 硬件的 CPU缓存   硬盘缓存   内存 软件的  io流缓存 hibernate  的一级缓存   也是为了操作数据库的效率. 证明一级缓存在  : Person p=sessio ...

  4. CF370 D Memory and Scores

    dp题 并运用了前缀和 我看题目提示中有fft 我想了下感觉复杂度不过关还是未解 #include<bits/stdc++.h> using namespace std; typedef ...

  5. BOM(浏览器对象模型)的一些操作

    一个完整的JavaScript实现由三部分组成: ECMAScript:核心,定义语言基础,规定了语言的组成部分(语法,类型,关键字,保留字,对象等) DOM:文档对象模型,·DOM把整个页面映射成一 ...

  6. 纯CSS实现二级导航下拉菜单--css的简单应用

    思想:使用css的display属性控制二级下拉菜单的显示与否.当鼠标移动到一级导航菜单的li标签时,显示二级导航菜单的ul标签.由于实现起来比较简单,所以在这里直接给出了参考代码. 1.纯CSS二级 ...

  7. 【CJOJ2482】【POI2000】促销活动

    题面 Description 促销活动遵守以下规则: 一个消费者 -- 想参加促销活动的消费者,在账单下记下他自己所付的费用,他个人的详细情况,然后将账单放入一个特殊的投票箱. 当每天促销活动结束时, ...

  8. CF813E Army Creation

    题意 \(n\)个数\(a[i] ,q\)次询问,\(n,a[i],q<=10^5\)每次问\([l,r]\)内最多可以选多少个数,满足同一个数的出现次数不超过\(k\) 强制在线 Sol 处理 ...

  9. 【Webpack的使用指南 02】Webpack的常用解决方案

    说是解决方案实际上更像是webpack的插件索引. 写这一篇的目的是为了形成一个所以,将来要用时直接来查找即可. 索引目录 1.自动构建HTML,可压缩空格,可给引用的js加版本号或随机数:html- ...

  10. springmvc结合ajax的分页功能

    var itemCount;//符合查找条件的商品总页数,分页参考 var pageIndex = 0;//当前页,默认为0 var pageSize = 8;//每页显示个数为8 //按条件查找用户 ...