1: 线程 与 进程的区别
(1)简单而言一个应用程序就是一个进程,线程是一个进程内部的多个运行单位。
(2)多个进程的内部数据和状态都是完全独立的,线程是共享一块内存空间和一组系统资源,在程序内部可以相互调用;
然而进程之间的通信多数是必须通过网络的。
(3)线程本身的数据通常只是寄存器数据,以及一个程序执行时使用的堆栈等,所以线程的切换比进程切换的负担小。
2:java中多线程的实现啊(线程的创建)
(1) 继承Thread类实现线程
class MyThread extends Thread {
public void run() {
}
}
----------------------------------------------------------
(2)实现Runnable接口创建线程
class MyThread implements Runnable {
public void run() {
}
}
class TestThread {
MyThread myThread = new MyTread();
Thread mt = new Thread(myThread);
}
3:线程的监听模式和控制
public class Test extends Thread {
private static boolean b1 = false;
private static boolean b2 = false;
public void run() {
test();
}
public void test() {
while (!b1) {
while(!b2) {
...//方法体
try {
Thread.sleep(50);
}catch(Exception e) {
e..printStackTrace();
}
}
try {
Thread.sleep(50);
}catch(Exception e) {
e..printStackTrace();
}
}
}
/**
* 暂停线程的方法
*/
public static void pauseThread() {
b2 = true;
}
/**
* 继续线程的方法
*/
public static void resumeThread() {
b2 = false;
}
/**
* 停止线程的方法
*/
public static void stopThread() {
b2 = true;
b1 = true;
}
/**
*线程的初始化
*
/
public static void initBall() {
b2 = false;
b1 = false;
}
}
(1)简单而言一个应用程序就是一个进程,线程是一个进程内部的多个运行单位。
(2)多个进程的内部数据和状态都是完全独立的,线程是共享一块内存空间和一组系统资源,在程序内部可以相互调用;
然而进程之间的通信多数是必须通过网络的。
(3)线程本身的数据通常只是寄存器数据,以及一个程序执行时使用的堆栈等,所以线程的切换比进程切换的负担小。
2:java中多线程的实现啊(线程的创建)
(1) 继承Thread类实现线程
class MyThread extends Thread {
public void run() {
}
}
----------------------------------------------------------
(2)实现Runnable接口创建线程
class MyThread implements Runnable {
public void run() {
}
}
class TestThread {
MyThread myThread = new MyTread();
Thread mt = new Thread(myThread);
}
3:线程的监听模式和控制
public class Test extends Thread {
private static boolean b1 = false;
private static boolean b2 = false;
public void run() {
test();
}
public void test() {
while (!b1) {
while(!b2) {
...//方法体
try {
Thread.sleep(50);
}catch(Exception e) {
e..printStackTrace();
}
}
try {
Thread.sleep(50);
}catch(Exception e) {
e..printStackTrace();
}
}
}
/**
* 暂停线程的方法
*/
public static void pauseThread() {
b2 = true;
}
/**
* 继续线程的方法
*/
public static void resumeThread() {
b2 = false;
}
/**
* 停止线程的方法
*/
public static void stopThread() {
b2 = true;
b1 = true;
}
/**
*线程的初始化
*
/
public static void initBall() {
b2 = false;
b1 = false;
}
}