java线程

Posted 乐之者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java线程相关的知识,希望对你有一定的参考价值。

1.线程安全指的是,主要是指多线程操作同一个数据时,防止脏数据的产生。
线程安全的情况:就是当一个线程需要对这个数据进行改写时,会给这个数据上一个同步锁,比如A线程拿到数据后,
给数据加上同步锁,这时候B线程进来了,但是这时候数据已经上锁,B线程则需要等待A线程释放锁之后才能对数据
进行操作,这样就防止了脏数据的产生。
StringBuffer是线程安全的。

2.线程并发,不是物理上的同时发生,而逻辑上的同时发生。

3.同步,异步是什么?
线程同步:多个线程同时访问同一资源,等待资源访问结束,耗时久,效率低。
线程异步:访问资源时在空闲等待时,同时访问其他资源,实现多线程。(比如下载资源时,可以做其他事情)
(异步就相当于放洗澡水时,边放边收拾衣服。。节省了时间。)

4.synchronized。
由于同一线程的多个线程共享同一片存储空间,可能会有访问冲突。可以用synchronized这个关键字,
避免同一个数据对象被多个线程同时访问。
synchronized有两种用法:
a、synchronized方法:在方法声明中加入synchronized,可以控制对类成员变量的访问。
b、synchronized块:通过synchronized关键字来声明synchronized块。

5.进程是操作系统的单位,线程是事务的单位。一个进程可以有多个线程。

6.java线程有6种状态:新建线程new,启动线程runnable,阻塞block,计时等待timed_waiting,等待线程waiting,终止线程terminated

7.Thread.yield( )方法:暂停当前正在执行的线程对象,并执行其他线程

8.wait和sleep的区别在哪里?调用sleep方法的线程不释放锁,但调用wait方法的线程释放锁。

9.Thread.join()方法:存在一个线程A,现在插入线程B,要求B先执行完毕,然后再继续执行线程A。

10.线程同步:多线程中,可能会发生线程抢占资源的问题。为了防止冲突,java提供线程同步的机制保证线程安全。

11.实现Runnable接口
public class ThreadTest implements Runnable{
  ...
   public void run() {}
}

ThreadTest t=new ThreadTest();
Thread t1=new Thread(t);     //为什么要用对象实例化来新建线程呢?直接使用t不好吗?
                              //runnable里面,没有start方法,所以必须把对象放到Thread线程里。

}

以上是关于java线程的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程 2.线程安全

Java多线程 4.线程池

Java多线程 1.认识Java线程

java 子线程 回调 主线程

Java线程池

java 如何获得线程池中正在执行的线程数?