Java多线程-常用方法
2021-04-07 16:28
标签:在线 nic trace span 重写 cat 时间 rac 创建线程 Java多线程-常用方法 标签:在线 nic trace span 重写 cat 时间 rac 创建线程 原文地址:https://www.cnblogs.com/orzjiangxiaoyu/p/13387917.html/**
* 测试Thread中常用方法
* 1.start();启动线程,调用当前线程的run();
* 2.run();一般要重写,将创建线程要执行的操作声明在此方法中
* 3.currentThread();静态方法,返回当前代码执行的线程
* 4.getName();获取当前线程的名字
* 5.setName();设置当前线程名字
*6.yield();释放当前cpu执行权,
* 7.join();在线程a中调用线程b的join(),此时线程a进入阻塞状态,直到线程b完全执行完之后,线程a才结束阻塞状态
* 8.stop();强制结束线程;已过时
* 9.sleep(long millitime);线程休眠;毫秒级,指定时间内当前线程阻塞状态
* 10.isAlive();判断线程是否存活
*
*线程优先级
* 1.MAX_PRIORITY:10
* MIN_PRIORITY:1
* NORM_PRIORITY:5
* 2.如何获取或设置当前线程优先级:
* getPriority();//获取
* setPriority(int p);//设置
*
* 说明:高优先级要抢占低优先级线程cpu的执行权,但是只是从概率上讲,高优先级高概率的情况下被执行,
* 并不意味只有在高优先级的线程执行完以后,低优先级的线程才执行
*
*
* @author orz
*/
class Mythread3 extends Thread
{
public Mythread3()
{
super();
}
public Mythread3(String name)
{
super(name);
}
@Override
public void run() {
for (int i = 0; i ) {
if (i%2==0)
{
/*try {
sleep(300);
}
catch (Exception e)
{
e.printStackTrace();
}*/
System.out.println(Thread.currentThread().getName()+":"+"优先级"+Thread.currentThread().getPriority()+
":"+i);
}
/* if(i%20==0)
{
yield();
}*/
}
}
}
/**
* @author orz
*/
public class ThreadMethodTest {
public static void main(String[] args) {
Mythread3 t=new Mythread3();
t.setName("线程一");
//设置线程优先级
t.setPriority(Thread.MAX_PRIORITY);
t.start();
// System.out.println("线程一的名字"+t.getName());
//给主线程命名
Thread.currentThread().setName("主线程");
for (int i = 0; i ) {
if (i%2==0)
{
System.out.println(Thread.currentThread().getName()+":"+"优先级:"+Thread.currentThread().getPriority()+
":"+i);
}
if(i==20)
{
try {
t.join();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
System.out.println(t.isAlive());
/* Mythread3 t2=new Mythread3("线程二");
t2.start();*/
}
}
/**
* 测试Thread中常用方法
* 1.start();启动线程,调用当前线程的run();
* 2.run();一般要重写,将创建线程要执行的操作声明在此方法中
* 3.currentThread();静态方法,返回当前代码执行的线程
* 4.getName();获取当前线程的名字
* 5.setName();设置当前线程名字
*6.yield();释放当前cpu执行权,
* 7.join();在线程a中调用线程b的join(),此时线程a进入阻塞状态,直到线程b完全执行完之后,线程a才结束阻塞状态
* 8.stop();强制结束线程;已过时
* 9.sleep(long millitime);线程休眠;毫秒级,指定时间内当前线程阻塞状态
* 10.isAlive();判断线程是否存活
*
*线程优先级
* 1.MAX_PRIORITY:10
* MIN_PRIORITY:1
* NORM_PRIORITY:5
* 2.如何获取或设置当前线程优先级:
* getPriority();//获取
* setPriority(int p);//设置
*
* 说明:高优先级要抢占低优先级线程cpu的执行权,但是只是从概率上讲,高优先级高概率的情况下被执行,
* 并不意味只有在高优先级的线程执行完以后,低优先级的线程才执行
*
*
* @author orz
*/
class Mythread3 extends Thread
{
public Mythread3()
{
super();
}
public Mythread3(String name)
{
super(name);
}
@Override
public void run() {
for (int i = 0; i 100; i++) {
if (i%2==0)
{
/*try {
sleep(300);
}
catch (Exception e)
{
e.printStackTrace();
}*/
System.out.println(Thread.currentThread().getName()+":"+"优先级"+Thread.currentThread().getPriority()+
":"+i);
}
/* if(i%20==0)
{
yield();
}*/
}
}
}
/**
* @author orz
*/
public class ThreadMethodTest {
public static void main(String[] args) {
Mythread3 t=new Mythread3();
t.setName("线程一");
//设置线程优先级
t.setPriority(Thread.MAX_PRIORITY);
t.start();
// System.out.println("线程一的名字"+t.getName());
//给主线程命名
Thread.currentThread().setName("主线程");
for (int i = 0; i 100; i++) {
if (i%2==0)
{
System.out.println(Thread.currentThread().getName()+":"+"优先级:"+Thread.currentThread().getPriority()+
":"+i);
}
if(i==20)
{
try {
t.join();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
System.out.println(t.isAlive());
/* Mythread3 t2=new Mythread3("线程二");
t2.start();*/
}
}
上一篇:线程同步图解 - 条件变量
下一篇:pyjnius:访问java类