关闭
当前搜索:

多线程编程-线程间通信-ThreadLocal(七)

1,ThreadLocal类主要解决的是每个线程绑定自己的值,这里存储的是每个线程私有的数据,解决了变量在不同线程间的隔离性。测试代码:public class Tools { public static ThreadLocal tl = new ThreadLocal(); }public class ThreadA extends Thread { @Override public v...
阅读(4) 评论(0)

多线程编程-线程间通信-join方法的使用(六)

方法join的使用1,主线程启动子线程后,如果主线程项等子线程执行完成后再结束,就要用到join()方法了。测试代码:public class JoinThread extends Thread{ @Override public void run() { try { int value = (int)(Math.random()*10000); System.out.pri...
阅读(9) 评论(0)

多线程编程-线程间通信.管道(五)

通过管道进行线程间通信:字节流(PipedOutputStream,PipedInputStream) 在Java中提供了各种各样的输入/输出流Stream,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。使用管道实现线程间的通信,不需要借助类似临时文件之类的东西。 测试代码: public class...
阅读(15) 评论(0)

多线程编程-线程间通信.wait/notify(四)

多个线程通过共同访问一个变量的方式,也可以实现线程间通信,通过这种方式,线程要主动去读取一个共享变量,一方面需要加同步,另一方面花费了读取变量的时间,但是读取到的值是不是要想要的,并不能确定。而等待/通知机制,可以更好解决线程间数据读取时机的问题。1,不使用等待/通知机制的线程间通信测试代码:public class MyList { private List list = new ArrayL...
阅读(21) 评论(0)

多线程编程-volatile关键字(三)

2.3 volatile关键字 Volatile关键字的主要作用是使变量的多个线程间可见。还有一点就是禁止指令重排序。   使用volatile关键字增加了实例变量在多个线程之间的可见性,但是volatile不能保证原子性。 关键synchronized和volatile的比较: 1)volatile是线程同步的轻量级实现,所以volatile性能比synchronized要好,并且vo...
阅读(13) 评论(0)

多线程编程-synchronized语句块(三)

2.2 synchronized 同步语句块 2.2.1 使用synchronized同步方法时,如果一个线程调用同步方法执行一个长时间的任务,那么其他线程必须等待很长时间,这时用同步语句块可提高执行效率。 同步方法耗时测试代码: public class Task { private String getData1; private String getData2; publ...
阅读(16) 评论(0)

多线程编程-Synchronized同步方法(二)

2.1 synchronized 同步方法     “非线程安全”会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是读到的数据其实是被更改过的。     “线程安全”就是获取的实例变量的值是经过同步处理的,不会出现脏读的现象。   2.1.1 方法内的变量是线程安全的     “非线程安全”的问题存在于“实例变量”中,如果是方法内部的私有变量,就是“线...
阅读(21) 评论(0)

多线程编程-Java线程概述(一)

一,Java多线程技能 1.1  进程和多线程的概念 可以把一个正在操作系统中运行的程序理解为一个“进程”。进程是受操作系统管理的基本运行单元。   线程可以理解为在进程中独立运行的子任务。当打开浏览器,下载文件的同时,还可以打开看视频,这些功能就对应了多个线程在后台运行。使用多线程就是在使用异步,因为每个线程被调用的时机是随机的。   1.2  继承Thread类,实现Runnabl...
阅读(24) 评论(0)
    个人资料
    • 访问:35838次
    • 积分:1724
    • 等级:
    • 排名:千里之外
    • 原创:133篇
    • 转载:38篇
    • 译文:0篇
    • 评论:9条
    最新评论