Java中线程用法总结

 更新时间:2015年06月08日 15:12:25   作者:liuzx32  
这篇文章主要介绍了Java中线程用法,实例总结了java中线程的常见使用技巧,需要的朋友可以参考下

本文实例总结了Java中线程用法。分享给大家供大家参考。具体分析如下:

1.线程是基本调度单元。共享进程的资源,如内存和文件句柄。但有自己的pc(程序计数器),stack(线程栈)及本地变量

2.线程的优势:

a) 充分利用多处理器
b) 可以简化模型。特定任务给特定线程。如servlets及rmi等框架。
c) 对异步事件的简单处理。如socket,nio使用更复杂。而现在的操作系统支持更大数量的线程。
d) 界面的更佳响应

3.内部锁:synchronized块。互斥。可重入(reentrancy),这样的设计可以避免死锁

4.内存可见性:因为编译器的优化,线程并不和你看到的一样。

public class NoVisibility {
private static boolean ready;
private static int number;
private static class ReaderThread extends Thread {
 public void run() {
  while (!ready)
   Thread.yield();
   System.out.println(number);
  }
}
public static void main(String[] args) {
 new ReaderThread().start();
 number = 42;
 ready=true;
}
}

可能打印0,或者一直循环。因为重排序了

5.volatile:可以解决内存可见性,对syncronized性能更佳,但仅此而已,如不能保证a++的原子性

6.溢出(escape):不要在构造函数中将this指针溢出。不要将内部变量溢出,如:

class Test {
private String[] list = new String[] {};
public String[] getList() {return list;}
}

7.线程封闭:把对象封闭在一个线程中,无论对象是否是线程安全的,都能保证线程安全

a) statck限制。即只有本地变量能访问该对象。
b)ThreadLocal。

8.不可变对象。一定是线程安全的。不可变对象必须满足:

a) 状态不能在创建后修改。
b) 所以的域都是final
c) 正确创建对象,没有this指针溢出

9.安全发布

a) 通过static初始化对象
b) 使用volatile或AtomicReference
c) 将引用存储于正确创建的对象的final域
d) 使用锁

希望本文所述对大家的java程序设计有所帮助。

相关文章

  • java实现异步线程,回调接口方式

    java实现异步线程,回调接口方式

    这篇文章主要介绍了java实现异步线程,回调接口方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java地理坐标系及投影间转换代码示例

    java地理坐标系及投影间转换代码示例

    在地图投影中,经常需要将坐标从不同的坐标系之间进行转换,下面这篇文章主要给大家介绍了关于java地理坐标系及投影间转换的相关资料,需要的朋友可以参考下
    2024-08-08
  • 如何解决Webservice第一次访问特别慢的问题

    如何解决Webservice第一次访问特别慢的问题

    这篇文章主要介绍了如何解决Webservice第一次访问特别慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 软件开发基础之设计模式概述

    软件开发基础之设计模式概述

    这篇文章介绍了软件开发基础之设计模式,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • 详解Spring Boot最新版优雅停机的方法

    详解Spring Boot最新版优雅停机的方法

    这篇文章主要介绍了Spring Boot最新版优雅停机的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • http basic authentication通过post方式访问api示例分享 basic认证示例

    http basic authentication通过post方式访问api示例分享 basic认证示例

    在HTTP中,基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供以用户名和口令形式的凭证,这篇文章主要介绍了http basic authentication通过post方式访问api示例,大家参考使用吧
    2014-01-01
  • Java 实战项目之毕业设计管理系统的实现流程

    Java 实战项目之毕业设计管理系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现毕业设计管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • SpringBoot mail中文附件乱码的解决方法

    SpringBoot mail中文附件乱码的解决方法

    本篇文章主要介绍了SpringBoot mail中文附件乱码的解决方法,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • Springboot中配置Mail和普通mail的实现方式

    Springboot中配置Mail和普通mail的实现方式

    这篇文章主要介绍了Springboot中配置Mail和普通mail的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • mybatis中的异常BindingException详解

    mybatis中的异常BindingException详解

    这篇文章主要介绍了mybatis中的异常BindingException详解,此异常是mybatis中抛出的,意思是使用的这个方法找到,但是因为mapperScan()已经扫描到了Mapper类了,在绑定Mapper.xml时没有绑定到导致的,需要的朋友可以参考下
    2024-01-01

最新评论