Java多线程与并发库高级应用 学习笔记 1-9课
来源XXX,免得打广告嫌疑。
http://www.cnblogs.com/whgw/archive/2011/10/03/2198506.html
今天看了文章才发现创建线程最佳方式为实现Runnable接口,之前的习惯要改鲁。
http://blog.csdn.net/imzoer/article/details/8500670
Java中Timer的用法
package timer;import java.util.Calendar; import java.util.Timer; import java.util.TimerTask;public class TimerTest {static Timer timer = new Timer();public static void main(String[] args) {// task task to be scheduled.// delay delay in milliseconds before task is to be executed.// period time in milliseconds between successive task executions.timer.schedule(new MyTimerTask(), 2000);}} /** 执行间隔2秒与4秒交替进行*/ class MyTimerTask extends TimerTask {static boolean change = true;Calendar calendar = Calendar.getInstance();@Overridepublic void run() {change = !change;System.out.println(calendar.getTime());new Timer().schedule(new MyTimerTask(), change ? 2000 : 4000);}}
线程安全的在于多线程对同一资源对象的读、写、事务完成阶段。
http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
java synchronized关键字详解
弄明白synchronized这个关键字在不同情况锁住的对象粒度,以及范围。
package Thread;/*** 子线程2次,主线程4次交替循环10次。**/ public class AlternateLoop {static Sysout sysout = new Sysout();public static void main(String[] args) {for (int i = 0; i < 10; i++) {sysout.subBusiness(i);sysout.mainBusiness(i);}}}// class MyThread implements Runnable { // @Override // public void run() { // AlternateLoop.sysout.subBusiness(1); // } // } // // class MyThread2 implements Runnable { // // @Override // public void run() { // AlternateLoop.sysout.mainBusiness(i); // } // }/** 同一资源管理业务逻辑*/ class Sysout {private boolean isSub = true;public synchronized void mainBusiness(int i) {while (isSub) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}for (int j = 0; j < 4; j++) {System.out.println("mainBusiness" +j+"loop of"+ i);}isSub = true;this.notify();}public synchronized void subBusiness(int i) {while (!isSub) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}for (int j = 0; j < 2; j++) {System.out.println("subBusiness" +j+"loop of"+ i);}isSub = false;this.notify();} }
Java并发编程:深入剖析ThreadLocal
每个线程存在对应的线程副本对象。
package Thread;import java.util.Random;public class ThreadLocalTest {public static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>();public static void main(String[] args) {for (int i = 0; i < 2; i++) {new Thread(new Runnable() {@Overridepublic void run() {int data=new Random().nextInt();System.out.println(Thread.currentThread().getName()+"has put data :"+data);threadLocal.set(data);new A().get();new B().get();}}).start();}}static class A {public void get() {int data=threadLocal.get();System.out.println("A from Thread" + Thread.currentThread().getName() + ""+ data);}}static class B {public void get() {int data=threadLocal.get();System.out.println("B from Thread" + Thread.currentThread().getName() + ""+ data);}} }
上面的例子需要改造一下 这种内部静态类用起来不科学啊。
java线程:Atomic(原子的) jdk 1.5的新特性
Java并发编程:线程池的使用
package Thread;import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit;public class ThreadPoolTest {public static void main(String[] args) {ExecutorService threadPool =Executors.newCachedThreadPool(); // ExecutorService threadPool =Executors.newFixedThreadPool(10); // ExecutorService threadPool = Executors.newSingleThreadExecutor();for (int i = 0; i < 10; i++) {final int task = 1;threadPool.execute(new Runnable() {@Overridepublic void run() {for (int j = 0; j < 10; j++) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+ "is looping of " + j + "for task of" + task);}}});}Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {System.out.println("bombing!");}}, 6, 2, TimeUnit.SECONDS);} }
转载于:https://www.cnblogs.com/linkarl/p/4808838.html
Java多线程与并发库高级应用 学习笔记 1-9课相关推荐
- Java多线程与并发库高级应用--18_传智播客_张孝祥_java5阻塞队列的应用
Java多线程与并发库高级应用--18_传智播客_张孝祥_java5阻塞队列的应用 原创:徐工 2018-5- 5 17.10 package cn.itcast.heima2; import jav ...
- Java多线程与并发库高级应用架构
张孝祥_Java多线程与并发库高级应用 [视频介绍:] Java线程是一项非常基本和重要的技术,在偏底层和偏技术的Java程序中不可避免地要使用到Java线程技术,特别是android手机程序和游戏开 ...
- JAVA Java多线程与并发库
Java多线程与并发库 同步方式 import javax.xml.stream.events.StartDocument;public class TestSynchronized {public ...
- java定时器 并发_【java多线程与并发库】— 定时器的应用 | 学步园
定时器的应用 1. 定时器主要涉及到两个类(java.util包中) @->public class Timer extendsObject (一种工具,线程用其安排以后在后台线程中执行的任务 ...
- Java多线程与线程并发库高级应用笔记
以下内容是学习张老师Java多线程与线程并发库高级应用时所做的笔记,很有用 网络编辑器直接复制Word文档排版有点乱,提供原始文件下载 先看源文件概貌 张孝祥_Java多线程与并发库高级应用 [视频介 ...
- Java 多线程与并发编程专题
Java 线程基础 Java 多线程开发 线程安全与同步 并发控制 非阻塞套接字(NIO) Java 5 中的并发 JDK 7 中的 Fork/Join 模式 相关书评 Java 平台提供了一套广泛而 ...
- java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!
点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书! 在介绍本书单之前,我想先问一下各位读者,你们之前对于Java并发编程的了解有多少呢.经过了1 ...
- 《Java并发编程实践》学习笔记之一:基础知识
<Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念: (2)进程:是一种活动,它是由一个动作序列组成 ...
- JAVA多线程和并发基础面试问答(转载)
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
最新文章
- Jenkins遇到问题一:jenkins配置权限不对导致无法登陆或者空白页面解决办法
- ATM信元的交换方式为?
- 【正一专栏】亚冠抽签点评——上港令人期待
- 第18课:模型部署上线的几种服务发布方式
- thinkphp6企业项目实战_[MarsZ]ThinkPHP项目实战总结
- python如何安装第三方库
- OCEval-动态执行ObjectiveC的热修复方案
- Activity保存状态saving activity state和onPause()
- 数据挖掘入门到精通—R语言视频教程
- DoNet6新特性 Enumerable.Chunk()
- OCR算法识别性能评估
- 一个屌丝程序猿的人生(十五)
- opencv 拍摄并保存照片
- 怎么把wav转换成mp3格式,5种方法值得收藏
- 基于单片机定时闹钟设计
- DataTable的行列转换及多表头HTML表格转Excel
- 聊聊WPF中字体的设置
- 神经网络最本质的理论基础是什么?
- ubuntu下小企鹅输入法fcitx安装,以及重启后无法使用的问题解决
- Oracle 的 Round函数
热门文章
- 爆发前的最后按钮 白鹭推HTML5首款生态产品Egret Runtime
- 查看http的并发请求数与其TCP连接状态
- PL/SQL Developer启动时报错:“Control 'dxDockBrowserPanel' has no parent window
- 使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP
- LOJ#6085. 「美团 CodeM 资格赛」优惠券(set)
- OSGI 插件操作命令
- QTP - 描述性编程
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- android_launcher的源码详细分析
- Java -- 注解 annotation