发表于: 2017-11-17 22:31:16
1 603
今天完成的事情:
学习了多线程 创建 启动 状态 调度 常用方法 锁 同步
java线程通过java.lang.Thread类 来实现 通过创建Thread的实例来创建新的线程
java线程的创建有两种方法
1 定义线程类实现 Runnable接口 推荐使用该方法 灵活
Thread t=new Thread(target) ; //target为Runnable接口类型
Runnable中只有一个方法 public void run();用以定义线程运行体
使用Runnable接口 可以为多个线程提供共享的数据
实现Runnable接口的类的run方法定义中可以使用Thread的静态方法
public static Thread currentThread() 获取当前线程的引用
class Runner1 implements Runnable{
public void run () {
for (int i=0;i<100;i++){
System.out.println("Runner:-------"+i); }}}
2、可以定义一个Thread的子类并重写run方法 这个类本身就实现了Runnable接口
然后生成该类的对象
class Runner1 extends Thread {
public void run(){
for(int i=0;i<100;i++){
System.out.println("Runner:---------"+i); }
主函数 创建线程 两种方法
public class Thread1 {
public static void main (String args[]) {
Runner1 r = new Runner1();
// r.run();
Thread t=new Thread(r);
t.start();
for (int i=0;i<100;i++){
System.out.println("Thread:---------"+i);
}}
static class Runner1 implements Runnable{
public void run () {
for (int i=0;i<100;i++){
System.out.println("Runner:-------"+i); }}}}
public class Thread2 {
public static void main(String args[]) {
Runner1 r=new Runner1();
r.start();
for (int i=0;i<100;i++){
System.out.println("Thread:---------"+i);
}}
static class Runner1 extends Thread {
public void run(){
for(int i=0;i<100;i++){
System.out.println("Runner:---------"+i);
}
sleep();Thread静态方法 是当前线程休眠(毫秒) 可以由类名直接调用 Thread.sleep();
public static void sleep(long millis) throws InterrupteException
public class TestWay {
public static void main(String[] args) {
MyThread myThread=new MyThread();
myThread.start();
try{ myThread.sleep(10000);
}catch (InterruptedException e){ }
// myThread.interrupt();
myThread.flag=false;
}
static class MyThread extends Thread {
private boolean flag=true;
public void run() {
while (flag){ //true 死循环
System.out.println("=="+new Date()+"==");
try { sleep(1000);
} catch (InterruptedException e) {
return;
}}}}
join()方法 合并某个线程
public class TestJoin {
public static void main(String[] args) {
MyThread2 t1=new MyThread2("aaa");
t1.start();
try{t1.join();
}catch (InterruptedException e){ }
for (int i=0;i<10;i++){
System.out.println("i am in");
}}}
class MyThread2 extends Thread {
MyThread2(String s) {
super(s); }
public void run() {
for (int i=0;i<10;i++){
System.out.println("i am:" + getName());}
try {sleep(1000);
} catch (InterruptedException e) {return; }
yield()方法 让出cpu yield n 产量 击穿 vt 屈服 投降生产 获利 不在反对 vi 退让 屈服 放弃
public class TestYield {
public static void main(String[] args) {
MyThread3 t1=new MyThread3("t1");
MyThread3 t2=new MyThread3("t2");
t1.start(); t2.start(); }
static class MyThread3 extends Thread{
MyThread3(String s) {
super(s); }
public void run() {
for (int i=0;i<100;i++){
System.out.println( getName()+":"+i);
if (i%10==0)
yield(); }
线程的优先级
Thread.MIN_PRIORRITY=1 Thread.MAX_PRIORRITY=10
Thread.NORM_PRIORITY=5
使用下述方法获得或设置 线程的优先级
int gerPriority(); void setPriority(int newPriority);
t2.setPriority(Thread.NORM_PRIORITY+3);
明天计划的事情:拆分story
遇到的问题:公司框架生成的server 运行失败 提示找不到路径 乱码
把整个文件的路径改成英文 可以了
公司框架 生成的测试类 第三行 测试失败
发现 公司自动生成的是 client。xml 测试里面是
applicationContext-sca.xml"
把这个文件路径 改好 跑通
收获:线程 概念 “是一个程序里面不同的执行路径 一个cpu同一个时刻只能执行一个线程
线程的几种状态 就绪 运行 阻塞 终止。。
start()用来执行线程
r.run();是调用方法 r.start()是启动线程
psvm回车 快速 输入主函数 好久不用 复习一下 sout 回车
评论