java多线程学习二
声明:本篇博客是本人为了自己学习保存的心得,其内容主要是从大神——五月的仓颉的博客中学习而来,在此多谢大神五月的仓颉的分享,敬礼!如有疑问请联系博主,谢谢!
本章主要记录并讲述线程在项目中常用的方法:
1、start()
start()方法是线程的启动方法,向cpu发出命令去调用线程对象的run()方法,产生一个异步执行的效果。延伸:在多线程的项目中,cpu执行哪一个线程的几率是随机的。
2、run()
run()方法只有调用了start()方法之后才有用。单独调用是没任何作用的。
3、isAlive()
isAlive()是获取线程的状态的(运行=true、停止=false)
4、getId()
在java应用中,有一个long型的全局唯一的线程ID生成器threadSeqNumber,getId()可以获取一个线程的id。
5、getName()
顾名思义,该方法可以获取线程的名称。
6、getPriority()和setPriority(int newPriority)
上面两个方法可以设置线程的优先级,两个在等待CPU的线程,优先级高的线程越容易被CU选择执行。前提:必须要两个线程同事执行。
看如下例子:
public class MyThread1 implements Runnable{ @Override
public void run() { System.out.println("线程1的优先级:"+Thread.currentThread().getPriority());
}
}
public class MyThread2 implements Runnable{
@Override
public void run() { System.out.println("线程2的优先级:" + Thread.currentThread().getPriority()); }
}
public class Test { public static void main(String[] args) { MyThread1 myThread1 = new MyThread1();
MyThread2 myThread2 = new MyThread2();
Thread thread1 = new Thread(myThread1);
Thread thread2 = new Thread(myThread2);
thread2.setPriority(4);
thread2.start();
thread1.start();
System.out.println("main: "+Thread.currentThread().getPriority()); } }
运行结果:
main: 5
线程2的优先级:4
线程1的优先级:5
可以看出优先级高的线程先执行(这块我其实是有些疑问的,经过自己的测试,发现并没有得到相应的结果,以后有空多研究研究)
7、isDaeMon、setDaemon(boolean on)
该方法设置线程为守护线程,守护线程是一种的特殊的线程,作用是为其他线程提供便利,最典型的事例就是java的垃圾回收机制,GC线程,伴随着主线程的结束而销毁。
8、join()
该方法主要作用是等待线程销毁,与sleep()方法的区别是:sleep(2000)不释放锁,join(2000)释放锁。
java多线程学习二的更多相关文章
- Java多线程学习(二)---线程创建方式
线程创建方式 摘要: 1. 通过继承Thread类来创建并启动多线程的方式 2. 通过实现Runnable接口来创建并启动线程的方式 3. 通过实现Callable接口来创建并启动线程的方式 4. 总 ...
- Java多线程学习(二)synchronized关键字(2)
转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79670775 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...
- Java多线程学习(二)synchronized关键字(1)
转载请备注地址: https://blog.csdn.net/qq_34337272/article/details/79655194 Java多线程学习(二)将分为两篇文章介绍synchronize ...
- Java多线程学习笔记
进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...
- Java多线程学习(转载)
Java多线程学习(转载) 时间:2015-03-14 13:53:14 阅读:137413 评论:4 收藏:3 [点我收藏+] 转载 :http://blog ...
- java多线程学习笔记——详细
一.线程类 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...
- JAVA多线程学习笔记(1)
JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...
- Java多线程学习(六)Lock锁的使用
系列文章传送门: Java多线程学习(二)synchronized关键字(1) Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多 ...
- Java多线程学习(五)线程间通信知识点补充
系列文章传送门: Java多线程学习(二)synchronized关键字(1) Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多 ...
随机推荐
- MySQL中锁问题
1.脏读 脏页只是在缓冲池中已经修改的页但是没有刷新到磁盘中,即数据库实例内存中的页和磁盘中的页事不一致的,当然在刷新到磁盘之前,日志都已经被写入到了重做日志文件中,而所谓的脏数据是指事务对缓冲池中行 ...
- Python是如何进行类型转换的?
函数 描述int(x [,base ]) 将x转换为一个整数long(x [,base ]) 将x转换为一个长整数float(x ...
- numpy的random模块详细解析
随机抽样 (numpy.random) 简单的随机数据 rand(d0, d1, ..., dn) 随机值 >>> np.random.rand(3,2) array([[ 0.14 ...
- django基本安装
一.web框架 1.什么是web框架? Web框架是一种开发框架,用来支持动态网站.网络应用程序及网络服务的开发.其类型有基于请求的和基于组件的两种框架. 本质上其实就是一个socket服务端,用户的 ...
- bootstrap模板
一.bootstrap基本介绍 1.什么是bootstrap? bootstrap就是个前端快速开发的工具,该工具是个简单.直观.强悍的前端开发框架,让web开发更加迅速简单,同时也是个响应式布局,兼 ...
- hibernate 操作 Postgresql 数据库报 operator does not exist: integer = character varying
网上的说法如下: Java开发Postgresql 数据库兼容应用的问题,与Oracle有一些不同: Java类型映射数据库类型的不同,Oracle jdbc驱动程序处理Java String类型可正 ...
- $Android自定义控件在不同状态下的属性
在写代码的时候,有时候需要控件在不同状态下显示不同的外观,比如在按钮按下的时候要变颜色,EditText获取焦点时候边框要变颜色等.那么下面就来梳理一下这些是怎么实现的. (一)按钮按下时候变颜色 1 ...
- Linux centos开机执行JAR Shell脚本
Linux centos开机执行shell脚本 Linux centos开机执行 java jar 1.编写jar执行脚本 vim start.sh 加入如下内容(根据自己真实路径与数据进行编写) ...
- PHP操作MongoDB数据库的示例
http://www.jquerycn.cn/a_8137 本节内容:PHP操作MongoDB数据库的简单示例. Mongodb的常用操作参看手册,php官方的http://us2.php.net/m ...
- 在freescale mx6q平台上添加spi资源
1:配置管脚为SPI功能 在board-mx6q_sabresd.h的最后添加,复制被重定义 (以添加SPI2为例) <span style="font-size:18px;" ...