资讯专栏INFORMATION COLUMN

Java 线程

ningwang / 1524人阅读

摘要:线程是指进程中的一个执行流程,一个进程中可以运行多个线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。的使用是开始线程的标志。也是线程的生命周期开始的地方。无论用前面的那种方式使用线程。

Java基础部分 —— 线程

</>复制代码

  1. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。

</>复制代码

  1. 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。

</>复制代码

  1. “同时”执行是人的感觉,在线程之间实际上轮换执行

总的来讲,主要涉及三个点

Thread

Runnable接口

run() 方法 和 start() 方法

所有在线程要做的事,即线程体,都写在run()方法里面,等待调用,这部分往往处理网络通信和数据库处理。

start()的使用是开始线程的标志。也是线程的生命周期开始的地方。无论用前面的那种方式使用线程。

举例使用线程

使用Runnable实现

</>复制代码

  1. /**
  2. * 实现Runnable接口的类
  3. */
  4. public class DoSomething implements Runnable {
  5. private String name;
  6. public DoSomething(String name) {
  7. this.name = name;
  8. }
  9. public void run() {
  10. for (int i = 0; i < 5; i++) {
  11. for (long k = 0; k < 100000000; k++) ;
  12. System.out.println(name + ": " + i);
  13. }
  14. }
  15. }
  16. /**
  17. * 测试Runnable类实现的多线程程序
  18. */
  19. public class TestRunnable {
  20. public static void main(String[] args) {
  21. DoSomething ds1 = new DoSomething("阿三");
  22. DoSomething ds2 = new DoSomething("李四");
  23. Thread t1 = new Thread(ds1);
  24. Thread t2 = new Thread(ds2);
  25. t1.start();
  26. t2.start();
  27. }
  28. }

使用Thread类实现:

</>复制代码

  1. /**
  2. * 测试扩展Thread类实现的多线程程序
  3. */
  4. public class TestThread extends Thread{
  5. public TestThread(String name) {
  6. super(name);
  7. }
  8. public void run() {
  9. for(int i = 0;i<5;i++){
  10. for(long k= 0; k <100000000;k++);
  11. System.out.println(this.getName()+" :"+i);
  12. }
  13. }
  14. public static void main(String[] args) {
  15. Thread t1 = new TestThread("阿三");
  16. Thread t2 = new TestThread("李四");
  17. t1.start();
  18. t2.start();
  19. }
  20. }

在整个Java线程中,实现并不是最难的,相反,线程有要注意的几个难点:

线程的生命周期

线程的优先级与线程调度

线程同步

定时器

定时任务:Java中Timer和TimerTask的使用

Future接口

Java程序执行超时——Future接口介绍

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64147.html

相关文章

  • 怎样分析 JAVA 的 Thread Dumps

    摘要:线程竞争会引起各种不同的问题,为了分析这些这些问题,你需要使用,能给你提供每个线程的精确状态信息。使用怎样解决问题示例当利用率高的异常提取获取最高使用率的线程。当与的连接保持在不正常的状态,线程将等待直到超时。 注: 该文章的原文是由 Tae Jin Gu 编写,原文地址为 How to Analyze Java Thread Dumps 当有障碍,或者是一个基于 JAVA ...

    cfanr 评论0 收藏0
  • Java线程可以分组,还能这样玩!

    摘要:如图所示,带有的所有线程构造方法都可以定义线程组的。线程组还能统一设置组内所有线程的最高优先级,线程单独设置的优先级不会高于线程组设置的最大优先级。 前面的文章,栈长和大家分享过多线程创建的3种方式《实现 Java 多线程的 3 种方式》。 但如果线程很多的情况下,你知道如何对它们进行分组吗? 和 Dubbo 的服务分组一样,Java 可以对相同性质的线程进行分组。 来看下线程类 Th...

    biaoxiaoduan 评论0 收藏0
  • Java Trouble Shooting - 使用线程

    摘要:线程的优先级代表线程的优先级为线程代表线程为,而代表该线程对应的操作系统级别的线程。若是有运行图形界面的环境,也可以使用一些图形化的工具,例如来生成线程栈文件。使用线程栈定位问题发现死锁当两个或多个线程正在等待被对方占有的锁,死锁就会发生。 什么是线程栈(thread dump) 线程栈是某个时间点,JVM所有线程的活动状态的一个汇总;通过线程栈,可以查看某个时间点,各个线程正在做什么...

    DataPipeline 评论0 收藏0
  • Java线程堆栈分析

    摘要:线程堆栈最擅长与分析如下类型问题系统无缘无故过高。性能瓶颈如无法充分利用等线程死锁死循环,饿死等。由于线程数量太多导致系统失败如无法创建线程等。注意死锁的两个或多个线程是不消耗的,有的人认为的使用率是线程死锁导致的,这个说法是完全错误的。 不知觉间工作已有一年了,闲下来的时候总会思考下,作为一名Java程序员,不能一直停留在开发业务使用框架上面。老话说得好,机会是留给有准备的人的,因此...

    jerry 评论0 收藏0
  • 慕课网_《细说多线程之Thread VS Runnable》学习总结

    摘要:时间年月日星期六说明本文部分内容均来自慕课网。慕课网教学源码无学习源码第一章课前准备前言课程说明比较和这两种线程创建的方式,需要知道和的基本创建方式。一旦主线程获取到了用户的输入,这时候,阻塞就会解除掉,主线程继续运行,直到结束。 时间:2017年07月08日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://g...

    netScorpion 评论0 收藏0
  • Java线程学习(一)Java线程入门

    摘要:最近听很多面试的小伙伴说,网上往往是一篇一篇的多线程的文章,除了书籍没有什么学习多线程的一系列文章。将此线程标记为线程或用户线程。 最近听很多面试的小伙伴说,网上往往是一篇一篇的Java多线程的文章,除了书籍没有什么学习多线程的一系列文章。但是仅仅凭借一两篇文章很难对多线程有系统的学习,而且面试的时候多线程这方面的知识往往也是考察的重点,所以考虑之下决定写一系列关于Java多线程的文章...

    Donne 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<