1、volatile和synchronized关键字
关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对改变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可见性。
关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法后者同步块中,它保证了线程对变量访问的可见性和排他性。
2、等待/通知机制
可以通过Java内置的等待/通知机制(wait()/notify())实现一个线程修改一个对象的值,而另一个线程感知到了变化,然后进行相应的操作。
3、管道输入/输出流
管道输入/输出流和普通的文件输入/输出流或者网络输入/输出流不同之处在于,它主要用于线程之间的数据传输,而传输的媒介为内存。
管道输入/输出流主要包括如下4中具体实现:PipedOutputStream、PipedInputStream、 PipedReader和PipedWriter,前两种面向字节,而后两种面向字符。
4、使用Thread.join()
如果一个线程A执行了Thread.join()语句,其含义是:当前线程A等待thread线程终止之后采用thread.join()返回。
Thread除了提供join()之外还提供了join(long millis)和join(long millis,int nanos)两个具备超时特性的方法。
5、使用TheadLocal
ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值得存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上得一个值。
可以通过set()方法来设置值,在当前线程下再通过get方法来获取原先设置得值。
标签:输出,Java,Thread,关键字,线程,程间,join,中线,输入 From: https://blog.51cto.com/u_16269508/7623695