【发布时间】:2014-02-24 16:10:28
【问题描述】:
我有一个问题,在谷歌上搜索了很长一段时间后我找不到它的答案。 我打算创建一个浏览器应用程序。我想要的是,当 main 方法运行时,我认为它是主浏览器应用程序,并且用户现在可以选择打开多个选项卡。每次打开选项卡时都会启动一个线程,当主应用程序关闭时,所有选项卡都将关闭。每个选项卡(线程)将独立运行,用户可以选择切换选项卡,前一个选项卡继续执行它的操作在用户在新选项卡中工作时执行此操作,并且用户可以根据需要打开任意数量的选项卡。 这是我的代码:
import java.util.Scanner;
public class mainClass
{
/**
* @param args
*/
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String input="abc";
String check="true";
while (check=="true")
{
System.out.println("if you want to open new tab write yes");
input=in.nextLine();
if (input.equals("yes"))
{
System.out.println("if check");
Thread tab = new myThread();
tab.start();
check="true";
}
else
{
check="false";
System.out.println("else check");
}
}
return;
}
}
public class myThread extends Thread
{
public myThread()
{
setDaemon(true);
}
public void run()
{
Scanner in = new Scanner(System.in);
System.out.println("one thread started");
System.out.println("enter url to search\n");
String input=in.nextLine();
}
}
我的问题是,当用户希望打开线程时,它会打开并完成其任务,而不是等待用户输入它会返回 main 。我想要的是用户应该可以选择在选项卡之间切换。当用户打开一个选项卡时,即使他什么都不做,他也会停留在该选项卡上,当他想切换到另一个选项卡时,他可以这样做。 我如何完全控制一个线程或者我如何睡眠()主线程,直到用户正在处理一个新线程并且当用户希望回到主线程时他可以做到这一点?这可能吗?
【问题讨论】:
-
有一个
yield方法可能会有所帮助。顺便说一句,我强烈推荐。编程并发教程的洞穴 -
我不鼓励您手动安排线程,因为这通常会引入性能问题和其他神秘错误。我建议您重新考虑您的体系结构,并将 GUI/选项卡/等视为一个线程,而将其他线程视为在后台保持应用程序状态最新的工作线程。
-
我实际上根本不会使用线程。多个选项卡不是并行操作的,它们是按顺序操作的,并且单个线程已经可以做到这一点。您并行拥有的是“状态”,但这就是为什么每个实例都有自己的状态的对象。
-
那我该怎么办?我对线程的所有知识都来自 ivor horton 的一本书,当我用谷歌搜索时,我没有得到任何与我的问题相关的东西或任何可以帮助我解决问题的东西?建议我一个我可以阅读的主题
-
虽然确实可以按顺序完成,但问题是如何为每个选项卡使用单独的线程来创建浏览器。
标签: java multithreading