java 多线程是什么?
java多线程是什么?,能用来干嘛?我对线程没什么概念,能帮忙给个最简单的例子解释下吗?最好能给写个main方法我执行下,自己理解一下!...
java 多线程是什么?,能用来干嘛?我对线程没什么概念,能帮忙给个最简单的例子解释下吗?
最好能给写个main方法我执行下,自己理解一下! 展开
最好能给写个main方法我执行下,自己理解一下! 展开
11个回答
展开全部
因为如果你在一个线程中进行耗时的操作时,那么其他的事情就不能做了,可能出现假死等状态,
如果要避免这种情况只能用多线程的。
public class Test extends Thread{
/**
* @param args
*/
public static void main(String[] args) {
//创建4个线程
new Test().start();
new Test().start();
new Test().start();
new Test().start();
}
@Override
public void run() {
System.out.println("");
super.run();
}
}
如果要避免这种情况只能用多线程的。
public class Test extends Thread{
/**
* @param args
*/
public static void main(String[] args) {
//创建4个线程
new Test().start();
new Test().start();
new Test().start();
new Test().start();
}
@Override
public void run() {
System.out.println("");
super.run();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java语言已经内置了多线程支持,所有实现runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java 线程理解 这篇有你想知道的大部分知识
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里先不讲juc包里的多线程类。juc相关内容会在Java并发专题讲解。
1. 线程的实现可以通过继承Thread类和实现Runable接口 也可以使用线程池。callable配合future可以实现线程中的数据获取。
2. Java中的线程有7种状态,new runable running blocked waiting timewaiting terminate
blocked是线程等待其他线程锁释放。 waiting是wait以后线程无限等待其他线程使用notify唤醒 timewating是有限时间地等待被唤醒,也可能是sleep固定时间。
3. Thread的join是实例方法,比如a.join(b),则说明a线程要等b线程运行完才会运行。
4. o.wait方法会让持有该对象o的线程释放锁并且进入阻塞状态,notify则是持有o锁对象的线程通知其他等待锁的线程获取锁。notify方法并不会释放锁。注意这两个方法都只能在synchronized同步方法或同步块里使用。
5. synchronized方法底层使用系统调用的mutex锁,开销较大,jvm会为每个锁对象维护一个等待队列,让等待该对象锁的线程在这个队列中等待。当线程获取不到锁时则让线程阻塞,而其他检查notify以后则会通知任意一个线程,所以这个锁时非公平锁。
6. Thread.sleep(),Thread.interrupt()等方法都是类方法,表示当前调用该方法的线程的操作。
一个线程实例连续start两次会抛异常,这是因为线程start后会设置标识,如果再次start则判断为错误。
1. 线程的实现可以通过继承Thread类和实现Runable接口 也可以使用线程池。callable配合future可以实现线程中的数据获取。
2. Java中的线程有7种状态,new runable running blocked waiting timewaiting terminate
blocked是线程等待其他线程锁释放。 waiting是wait以后线程无限等待其他线程使用notify唤醒 timewating是有限时间地等待被唤醒,也可能是sleep固定时间。
3. Thread的join是实例方法,比如a.join(b),则说明a线程要等b线程运行完才会运行。
4. o.wait方法会让持有该对象o的线程释放锁并且进入阻塞状态,notify则是持有o锁对象的线程通知其他等待锁的线程获取锁。notify方法并不会释放锁。注意这两个方法都只能在synchronized同步方法或同步块里使用。
5. synchronized方法底层使用系统调用的mutex锁,开销较大,jvm会为每个锁对象维护一个等待队列,让等待该对象锁的线程在这个队列中等待。当线程获取不到锁时则让线程阻塞,而其他检查notify以后则会通知任意一个线程,所以这个锁时非公平锁。
6. Thread.sleep(),Thread.interrupt()等方法都是类方法,表示当前调用该方法的线程的操作。
一个线程实例连续start两次会抛异常,这是因为线程start后会设置标识,如果再次start则判断为错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 线程的实现可以通过继承Thread类和实现Runable接口 也可以使用线程池。callable配合future可以实现线程中的数据获取。
2. Java中的线程有7种状态,new runable running blocked waiting timewaiting terminate
blocked是线程等待其他线程锁释放。 waiting是wait以后线程无限等待其他线程使用notify唤醒 timewating是有限时间地等待被唤醒,也可能是sleep固定时间。
3. Thread的join是实例方法,比如a.join(b),则说明a线程要等b线程运行完才会运行。
4. o.wait方法会让持有该对象o的线程释放锁并且进入阻塞状态,notify则是持有o锁对象的线程通知其他等待锁的线程获取锁。notify方法并不会释放锁。注意这两个方法都只能在synchronized同步方法或同步块里使用。
5. synchronized方法底层使用系统调用的mutex锁,开销较大,jvm会为每个锁对象维护一个等待队列,让等待该对象锁的线程在这个队列中等待。当线程获取不到锁时则让线程阻塞,而其他检查notify以后则会通知任意一个线程,所以这个锁时非公平锁。
6. Thread.sleep(),Thread.interrupt()等方法都是类方法,表示当前调用该方法的线程的操作。
一个线程实例连续start两次会抛异常,这是因为线程start后会设置标识,如果再次start则判断为错误。如果感兴趣可以B站搜索高淇老师的视频看看,希望对您有所帮助。
2. Java中的线程有7种状态,new runable running blocked waiting timewaiting terminate
blocked是线程等待其他线程锁释放。 waiting是wait以后线程无限等待其他线程使用notify唤醒 timewating是有限时间地等待被唤醒,也可能是sleep固定时间。
3. Thread的join是实例方法,比如a.join(b),则说明a线程要等b线程运行完才会运行。
4. o.wait方法会让持有该对象o的线程释放锁并且进入阻塞状态,notify则是持有o锁对象的线程通知其他等待锁的线程获取锁。notify方法并不会释放锁。注意这两个方法都只能在synchronized同步方法或同步块里使用。
5. synchronized方法底层使用系统调用的mutex锁,开销较大,jvm会为每个锁对象维护一个等待队列,让等待该对象锁的线程在这个队列中等待。当线程获取不到锁时则让线程阻塞,而其他检查notify以后则会通知任意一个线程,所以这个锁时非公平锁。
6. Thread.sleep(),Thread.interrupt()等方法都是类方法,表示当前调用该方法的线程的操作。
一个线程实例连续start两次会抛异常,这是因为线程start后会设置标识,如果再次start则判断为错误。如果感兴趣可以B站搜索高淇老师的视频看看,希望对您有所帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |