Java初识线程基本知识

网友投稿 655 2022-05-30

线程是操作系统能够进行运算的最小单位,被包含在进程中,是进程的实际运算单位。可以使用多线程提高运算速度。

进程由操作系统分配的内存空间,包含一个或多个线程。

一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。

线程是进程中的一部分,进程包含多个线程在运行。

一个程序至少有一个进程,一个进程至少有一个线程。

总结:

1) 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

2)资源分配给进程,同一进程的所有线程共享该进程的所有资源(内存、变量、常量等)

3)真正在机器上运行的是线程。

4)不同进程的线程间要利用消息通信的办法实现同步

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据

ArrayList、LinkedList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuffer是线程安全的。

示例

public static void main(String[] args){ // 进行10次测试 for(int i = 0; i < 10; i++){ test(); } } public static void test(){ // 用来测试的List List list = new ArrayList(); // 线程数量 int threadCount = 100; // 用来让主线程等待threadCount个子线程执行完毕 CountDownLatch countDownLatch = new CountDownLatch(threadCount); // 启动threadCount个子线程 for(int i = 0; i < threadCount; i++){ Thread thread = new Thread(new MyThread(list, countDownLatch)); thread.start(); } try { // 主线程等待所有子线程执行完成,再向下执行 countDownLatch.await(); }catch (InterruptedException e){ e.printStackTrace(); } // List的size System.out.println(list.size()); } } class MyThread implements Runnable{ private List list; private CountDownLatch countDownLatch;//CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。 public MyThread(List list, CountDownLatch countDownLatch){ this.list = list; this.countDownLatch = countDownLatch; } public void run(){ // 每个线程向List中添加100个元素 for(int i = 0; i < 100; i++){ list.add(new Object()); } // 完成一个子线程 countDownLatch.countDown(); }

新建状态 new()

就绪状态 star()

运行状态 run()

阻塞状态 sleep()睡眠 suspend()挂起

死亡状态

初始默认都是5

具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先级不能保证线程执行的顺序

结语

好了,以上就是Java初识线程基本知识介绍,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎。如有不足之处,欢迎评论指正。下次见。

Java初识线程基本知识

Java 任务调度 多线程

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Java 网络编程】Socket TCP UDP 联系
下一篇:Nginx知识点小总结
相关文章