Java多线程-常用方法
Posted orz江小鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多线程-常用方法相关的知识,希望对你有一定的参考价值。
/** * 测试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();*/ } }
/**
* 测试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();*/
}
}
以上是关于Java多线程-常用方法的主要内容,如果未能解决你的问题,请参考以下文章