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中调用线程bjoin(),此时线程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多线程-常用方法的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程——常用的方法

java中多线程安全性和同步的常用方法

Java多线程-常用方法

Java多线程Thread常用方法

多线程更新UI的常用方法

Java多线程-线程的状态和线程常用方法