您的位置:首页 > 其它

多线程(一)

2016-06-03 21:46 281 查看

一、进程和线程

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

二、java中的多线程

实现多线程的两种主要方式:一、继承Thread类,二、实现Runnable接口。

Thread类结构如下,

public class Thread implements Runnable{

}


因此,我们可以知道两种方式创建的线程在工作时性质一样。但,使用继承Thread类的方式来开发多线程在设计上有局限性,java是单继承的,因此可以使用实现Runnable接口的方式来实现。

1、继承Thread类

public class Thread1 extends Thread {
public void run() {
super.run();
System.out.println("Thread1");
}
public static void main(String[] args) {
Thread1 thread1 = new Thread1();
thread1.start();
System.out.println("运行结束!");
}
}


小结: 通过多次运行程序可以发现,在使用多线程技术时,代码的运行结果与代码执行顺序或者调用顺序无关。

1、实现Runnable接口。

Thread构造方法

构造方法摘要
Thread() //分配新的 Thread 对象。
Thread(Runnable target)/分配新的 Thread 对象。
// 分配新的 Thread 对象
Thread(Runnable target, String name)
// 分配新的 Thread 对象。
Thread(String name)
// 分配新的 Thread 对象。
Thread(ThreadGroup group, Runnable target)
//  分配新的 Thread 对象,以便将 target 作为其运行对象,
//将指定的 name 作为其名称,并作为 group 所引用的线程组的一员。
Thread(ThreadGroup group, Runnable target, String name)
//分配新的 Thread 对象,以便将 target 作为其运行对象,
//将指定的 name 作为其名称,作为 group 所引用的线程组的一员,
//并具有指定的堆栈大小。
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
//  分配新的 Thread 对象。
Thread(ThreadGroup group, String name)


我们可以知道,构造函数可以传递Runnable对象

public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("运行中!");
}
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
System.out.println("运行结束");

}
}


二、线程一些简单的用法

1、currentThread() 返回代码正被哪个线程调用的信息。

2、isAlive() 判断当前线程是否处于存活状态。

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

4、interrupt() 停止线程,不是中断线程而是在当前线程打了一个停止的标记;interrupted() 测试当前线程是否已经中断状态,执行后具有将状态标志清除为false的功能;isInterrupted() 测试Thread对象是否是中断状态,不具备清除状态的标志。

5、yield()放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间。但放弃的时间不确定,可能刚刚放弃又立马获得CPU时间片。

6、setPriority() 设置线程的优先级,高优先级的线程总是大部分执行完,但不代表高优先级的线程全部执行完,因为线程的优先级具有“随机性”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 线程