今天因为一些原因,写了一下线程,
//以前虽然学过,但是基本上没有深入了解过,这次又学了下,不过还是没有很深的了解
/**
*这个是线程类
*/
package threadTest;
import java.util.ArrayList;
import java.util.List;
public class MainThreadTest extends Thread {
private int index = 0;
//定于静态变量,可以全局操作,这样修改的list就会在线程中体现,
//发现只有static才可以其他的都不行,自己表示不是很理解,
//网上说全局变量就可以下,希望有谁可以指出下
private static List list = new ArrayList();
//定义是否退出循环的变量
private static boolean exit = true;
//单例类
private static MainThreadTest instance;
public static MainThreadTest getInstanc() {
if (instance == null) {
return new MainThreadTest();
} else {
return instance;
}
}
@Override
public void run() {
while (exit) {
if (list != null) {
for (String str : list) {
System.out.println(str + "---------------------" + index);
}
}
index++;
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//用来改变list
public void test(List list_t) {
list.addAll(list_t);
}
//开启线程
public void start_main() {
MainThreadTest.getInstanc().start();
}
//退出
public void exit_main() {
exit = false;
}
}
package threadTest;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 这个是测试类
* @author jueyue
*
*/
public class TestMain {
public static void main(String[] args) {
//开启线程
MainThreadTest.getInstanc().start_main();
Scanner input = new Scanner(System.in);
List list = new ArrayList();
boolean jueyue = true;
while(jueyue){
System.out.println("继续输入吧: ———");
String str = input.next();
list.add(str);
//把输入的东西添加到线程中去
MainThreadTest.getInstanc().test(list);
if(str.equals("jueyeu")){
jueyue = false;
//退出循环
MainThreadTest.getInstanc().exit_main();
}
list.clear();
}
System.out.println("测试结束了—————————————");
}
}
//以前虽然学过,但是基本上没有深入了解过,这次又学了下,不过还是没有很深的了解