博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java多线程学习(一)
阅读量:7107 次
发布时间:2019-06-28

本文共 1644 字,大约阅读时间需要 5 分钟。

hot3.png

  1. 相关概念

    进程:是一次程序的运行。

    线程:在进程中独立运行的子任务。

    使用多线程的优点:提升系统的运行效率。

  2. 如何使用多线程

    2.1继承Thread类

    Thread类的结构:public class Thread implements Runnable

    继承Thread类的方式,最大的局限就是不支持多继承。

    用法:定义线程类,此类继承自Thread类,并且重写run方法。然后定义了线程对象后,调用start方法启动线程。

public class MyThread extends Thread {    @Override   public void run() {       System.out.println("MyThread");    }        public static void main(String [] args){        MyThread myThread = new MyThread();       myThread.start();       System.out.println("main");}运行结果:mainMyThread或MyThreadmain

       启动了两个线程:main主线程和MyThread线程,两个线程谁先运行是随机的,所以才出现了以上的两种运行结果。

start方法通知线程规划器,此线程已经准备就绪,等待调用线程对象的run方法,具有异步执行的效果。若是调用了myThread。run(),则是同步执行,必须先执行完run方法,才会向下执行。

同时注意,一个线程多次调用start方法,会抛出IlllegalThreadStateExeception异常。而多个线程对象执行start方法的顺序页不代表线程启动的顺序。

2.2实现Runnable接口

public class MyRunnable implements Runnable {    @Override   public void run() {       System.out.println("MyRunnable");    }        public static void main(String [] args){       MyRunnable myRunnable= new MyRunnable();       Thread thread = new Thread(myRunnable);       thread.start();       System.out.println("main");}

 3.多线程相关方法

currentThread():返回代码段正在被哪个线程调用的消息:main Thread-0,Thread-1。

isAlive():判断当前线程是否处于活动状态。

sleep():在指定的毫秒数内让当前正在执行的线程休眠。

getId():获取线程的唯一标识。

4.停止线程

停止一个线程意味着在线程处理完任务之前停掉正在做的操作。

在Java中有三种方法可以终止正在运行的线程:

1)使用退出标志,使线程正常退出

2)stop方法,但该方法是不安全的。

3)使用interrupt方法中断线程。

4.1停止不了的线程

调用interrupt方法来停止线程,但interrupt方法的使用效果并不是像for+break那样,马上就终止循环,调用interrupt方法仅仅在当前线程中打了一个停止的标记,并不是真的停止线程。还需要加入一个判断才可以完成线程的终止。

如何判断线程的状态是不是停止的?

Thread提供了两个方法:1)this,interrupted():测试 当前线程 是否已经中断;2)this,isInterrupted():测试线程Thread对象是否已经中断。

 

转载于:https://my.oschina.net/u/2518655/blog/625360

你可能感兴趣的文章
常用u-boot命令详解(全) .
查看>>
算法导论——二叉查找树
查看>>
LifecycleMBeanBase
查看>>
转载:AbstractQueuedSynchronizer的实现分析(下)
查看>>
Spring IDE 添加xml文件
查看>>
“三缺一”微信谈判猜想 运营商毫无“底牌”
查看>>
base64 加密解密 golang (转)
查看>>
E: Could not get lock /var/lib/dpkg/lock
查看>>
Linux-Java线上故障排查一(高cpu使用率)
查看>>
MySQL的内部XA事务
查看>>
vi 常用命令行
查看>>
优酷去掉广告代码
查看>>
iptables简单设置
查看>>
《Java从入门到放弃》JavaSE入门篇:面向对象语法一(入门版)
查看>>
我的友情链接
查看>>
京东自建物流寓意电商进入蜕化阶段
查看>>
Kali Linux 2016.2发布提供虚拟机以及系统镜像下载
查看>>
关于配置
查看>>
2017年开工啦
查看>>
使用Python向MySQL数据库中存入json类型数据
查看>>