Java多线程编程
程序执行:开启子线程打印Good,程序在子类中定义一个全局变量(静态变量):public static boolean t= true;作为判断关闭子类线程条件。当检测到控制台有输入时并判断实现关闭子线程。
package com;
import java.util.Scanner;
public class pro {
// mian线程:主线程
public static void main(String[] args) {
son n = new son();
n.start(); //启动子线程
while(true){
// 控制台输入
Scanner s = new Scanner(System.in);
String str = s.next();// 阻塞,待输入
if(str.equals("a")){ //判断输入是否为"a"
// n.stop(); //关闭子线程,不建议使用,没有释放资源
son.t = false;//关闭子线程
System.out.println("关闭子线程");
}
System.out.println("你输入的内容是:"+str);
}
}
}
class son extends Thread{
public static boolean t= true;
@Override
public void run() {
while(t){
System.out.println("Good");
try{
Thread.sleep(2000);
}catch(Exception e){
}
}
}
}
Android多线程编程
程序执行:1、点击Button,开启子线程,在LogCat打印信息;
2、点击返回执行finish,关闭子线程。
package com.example.android_thread;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 =(Button)this.findViewById(R.id.button1);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cat c = new cat();
c.start();
}
});
}
// finish 会在 MainAct界面结束时执行
@Override
public void finish() {
super.finish();
cat.t=false;
}
}
class cat extends Thread{
public static boolean t = true;
@Override
public void run() {
int a =0 ;
while(t){
a++;
Log.d("data","apple"+a);
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}